【发布时间】:2014-08-07 18:46:00
【问题描述】:
考虑以下代码:
#include <sstream>
#include <iostream>
using namespace std;
int main()
{
stringstream ss;
ss << string("12");
int h;
ss >> h;
cout << h << endl;
ss.str(string("")); // clear the content of ss
ss << string("30");
int m;
ss >> m;
cout << m << endl;
return 0;
}
运行上述代码会产生一些随机输出:
12
0
在其他一些时候,观察到以下输出:
12
4
我希望输出很简单:
12
30
为什么我得到了意想不到的结果?
另外,在没有必要的 C++11 支持的情况下,将 string s 解析为 int i 的最佳方法应该是什么?应该是int i = atoi(s.c_str())吗?
【问题讨论】:
-
'另外,最好的解析方式应该是什么......'使用
std::istringstream。 -
你没有适当地清除流,使用
ss.clear()
标签: c++ iostream stringstream istream