EOF不起作用。请帮忙。谢谢!
#include <iostream>
#include <string>
#include <queue>
using namespace std;
int main()
{
string line; // string
queue<string> a; // queue for output
while (getline(cin, line) && !cin.eof())
{ // EOF working?
for (int i = 0; i < line.size(); i++)
if (line[i] != ' ' && line[i] % 2 == 0)
line[i] -= 32;
a.push(line);
}
while (!a.empty())
{
cout << a.front() << endl;
a.pop();
}
return 0;
}
为什么我不能“而(getline(cin,line))”?
答案 0 :(得分:0)
你可以while(getline(cin, line))
实际上&& !cin.eof()
没有做任何事情,正如 Sam Varshavchik 所指出的那样,因为getline
做了所有工作并退出了循环通过将流设置为自己的失败状态,因此永远不会处理cin.eof
。
的文档中说明如果在[输入流]中到达文件末尾或者在输入操作期间发生了其他错误,则提取也会停止。