读书人

istringstream 的状态判断有关问题

发布时间: 2012-04-10 21:03:56 作者: rapoo

istringstream 的状态判断问题

C/C++ code
int main(){    string str = "A B C D E F";    istringstream ss(str);    string tmpstr;    while ( ss )    {        ss >> tmpstr;        cout << tmpstr << endl;    }}
这段代码输出的是

A
B
C
D
E
F
F

即重复了输出最后一个,但是改为 while ( !ss.eof() ) 就正常了,这是为什么呢?

[解决办法]
while (ss >> tmpstr )
{


[解决办法]
while ( ss )
{
ss >> tmpstr;
cout << tmpstr << endl;
}

当流读取了最后一个字串F 时候,流得状态还是 ok的.当下一次读取的时候,读取失败,但tmpstr的内容还是会输出出来.所以最后的字串会输出两次.一般的写法如楼上.先读在判断流状态.

ss>>tmpstr 返回的是ss.

读书人网 >C++

热点推荐