#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <string>
using namespace std;
int main(int argc,char *argv[])
{
ifstream in(".\\test.cpp");
if(!in)
{
cerr<<"文件无法打开"<<endl;
return -1;
}
vector<string> words;
string line;
while (getline(in,line))
{
words.push_back(line);
}
in.close();
istringstream line_str;
string word;
vector<string>::const_iterator it = words.cbegin();
while(it != words.cend())
{
line_str.str(*it);
#if 1
while(line_str>>word)
{
cout<<word<<" ";
}
line_str.clear();
cout<<endl;
#endif
it++;
}
cin.get();
return 0;
}
line_str
定义在大while循环外,而小while(line_str>>word)
循环终止的条件是line_str
的状态fail。所以在每次使用后应置位clear
,或者直接将line_str
定义在大while之内,这样每次都会新创建一个,而不用置位。