//Stores the line
string line;
//create a vector where each element will be a new line
vector<string> v;
int counter = 0;
//While we havent reached the end of line
while (getline(cin, line) && !cin.eof())
{
//get the line and push it to a vector
v.push_back(line);
counter++;
for(int i = 0; i <counter; i++)
{
cout<<v[i]<<endl;
}
}
return 0;
}
问题是,如果我输入怎么说:
Hello
World (end of file)
输出仅为:
Hello
如果输入
,则不输出世界,只输出Hello和WorldHello
World
(end of file)
很抱歉,如果这是一个非常简单的问题:/但我无法弄明白
答案 0 :(得分:5)
如果您的行以EOF结尾而没有行尾,则:
while (getline(cin, line) && !cin.eof())
会有getline
返回“全部正常”,但由于getline
到达文件的实际结尾,cin.eof()
也是true
,这意味着循环不会处理输入的最后一次。
更改代码,使其完成:
while (getline(cin, line))
一切都会好的。
如果你真的在乎你实际上是在阅读整个文件,并且getline
没有因某些任意的其他原因而失败,那么在循环之后使用类似的东西可以确保 - 但我觉得很难想想会发生这种情况......
if (!cin.eof())
{
cout << "Enexpected: didn't reach end of file" << endl;
}