请教:如何解析string对象?

romanwall 2009-05-05 08:24:24
string对象的内容如下:
2009-5-5 13:07:30 45000.0
该string对象中包含了日期、时间和观测数据。请问如何将年、月、日与小时、分、秒以及数据分别析出?
...全文
159 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
MMMoonriver 2009-05-06
  • 打赏
  • 举报
回复
xuexi
winingsky 2009-05-05
  • 打赏
  • 举报
回复
帮顶,只知道按固定长度读取或者用空格分隔,然后找空格!
  • 打赏
  • 举报
回复
string s="2009-5-5 13:07:30 45000.0 "
sscanf(s.c_str(),"%[^-]-%[^-]-%s %[^:]:%[^:]:%s %s",year,month,day,hour,min,sec,data);
  • 打赏
  • 举报
回复
直接sscanf操作string.c_str(),可以搞定。
fairchild811 2009-05-05
  • 打赏
  • 举报
回复
用Split
adventurelw 2009-05-05
  • 打赏
  • 举报
回复
详细代码就不写了

std::istringstream istr(str);//str为包含那些数据的字符串
int year;
int month;
int day;
int hour;
int minute;
int second;
double data;
istr >> year;
istr.get();
istr >> month;
istr.get();
istr >> day;
istr >> hour;
istr.get();
istr >> minute;
istr.get();
istr >> second;
istr >> data;

输出的时候要记着时间计数如果小于10,需要在前面添加如果需要的0。
光宇广贞 2009-05-05
  • 打赏
  • 举报
回复
string[] time = str.Split(new char[]{' '});
完了。
S_zxing 2009-05-05
  • 打赏
  • 举报
回复
帮顶……
cnStreamlet 2009-05-05
  • 打赏
  • 举报
回复
找空格
再找 - :

抽空实现一个类似下面的字符串的 Split,以后遇到这种问题就可以很方便了


template <typename _Elem>
vector<basic_string<_Elem> > Split(const basic_string<_Elem> &src, const basic_string<_Elem> &boundary, int nMax)
{
assert(boundary.length() > 0);

vector<basic_string<_Elem> > ret;

if (boundary.empty())
{
return ret;
}

basic_string<_Elem>::size_type from = 0, to = src.find(boundary);

int nCount = 1;

while (to != basic_string<_Elem>::npos)
{
ret.push_back(basic_string<_Elem>(src, from, to - from));
from = to + boundary.size();
to = src.find(boundary, from);

if (nMax != 0 && ++nCount >= nMax)
{
break;
}
}
ret.push_back(basic_string<_Elem>(src, from, basic_string<_Elem>::npos - from));

return ret;
}


lingyin55 2009-05-05
  • 打赏
  • 举报
回复
如果格式是固定的话,那么按照长度读出来不就行了?
string dateStr;

date.append(str,0,8);

string timeStr;

date.append(str,...);
tangxu12 2009-05-05
  • 打赏
  • 举报
回复
string 中有很多成员函数啊

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧