首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

istringstream 的状态判断有关问题

2012-04-10 
istringstream 的状态判断问题C/C++ codeint main(){string str A B C D E Fistringstream ss(str)s

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.

热点排行