为什么我无法将一个整数值提取到Num
变量中?
#include#include #include using namespace std; int main() { string Digits("1 2 3"); stringstream ss(Digits); string Temp; vector Tokens; while(ss >> Temp) Tokens.push_back(Temp); ss.str(Tokens[0]); int Num = 0; ss >> Num; cout << Num; //output: 0 }
小智.. 10
当流提取3个挖掘者"1 2 3"中的最后一个时,将设置eof状态.str()成员不会清除它,您需要自己完成.将您的代码更改为:
ss.clear(); ss.str(Tokens[0]);
Assaf Lavie.. 8
你为什么要读入临时string
变量?
你可以从stringstream读入一个int ...
int main() { string Digits("1 2 3"); stringstream ss(Digits); int Temp; vectorTokens; while(ss >> Temp) Tokens.push_back(Temp); }
Johannes Sch.. 6
您必须重置所有状态标志(eofbit)并使流进入良好状态(goodbit):
ss.clear(); // clear status flags ss.str(Tokens[0]);
原因是如果你继续提取直到结束,你将会结束,并在该流上设置eof标志.之后,读取操作将被取消,您必须再次清除该标志.无论如何,在清除并重置字符串之后,您可以继续提取整数.
当流提取3个挖掘者"1 2 3"中的最后一个时,将设置eof状态.str()成员不会清除它,您需要自己完成.将您的代码更改为:
ss.clear(); ss.str(Tokens[0]);
你为什么要读入临时string
变量?
你可以从stringstream读入一个int ...
int main() { string Digits("1 2 3"); stringstream ss(Digits); int Temp; vectorTokens; while(ss >> Temp) Tokens.push_back(Temp); }
您必须重置所有状态标志(eofbit)并使流进入良好状态(goodbit):
ss.clear(); // clear status flags ss.str(Tokens[0]);
原因是如果你继续提取直到结束,你将会结束,并在该流上设置eof标志.之后,读取操作将被取消,您必须再次清除该标志.无论如何,在清除并重置字符串之后,您可以继续提取整数.