我有这个代码,例如:
#include <iostream>
#include <sstream>
using namespace std;
int main(){
stringstream ss;
string buffer,first_word;
int i;
for(i = 0; i < 4; i++){
getline(cin,buffer); // getting line
ss.str(buffer); // initializing the stream
ss>>first_word;
cout<<first_word<<endl;
ss.str(string()); // cleaning stream
}
return 0;
}
使用此输入:
line one with spaces
line two with spaces
alone
line four with spaces
我期望的输出只是行的第一个单词,如下所示:
line
line
alone
line
但我得到了这个:
line
line
alone
alone
因此,在获得只有一个单词的行后,stringstream
没有更新。
请向我解释一下,我不想用代码给出正确答案,我想知道原因。
谢谢。
答案 0 :(得分:1)
如果你打算检查流的状态,你会看到这一行:
ss>>first_word;
if (!ss.good()) std::cout << "problem." << std::endl;
cout<<first_word<<endl;
确实输出“问题。”
ss.str("");
ss.clear();
解决问题。