提问人:Vitor Vidal 提问时间:4/4/2017 最后编辑:user4581301Vitor Vidal 更新时间:4/4/2017 访问量:2795
使用 getline(std::cin, variable) 读取 EOF - C++
Reading EOF with getline(std::cin, variable) - C++
问:
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;
}
为什么我不能做“while(getline(cin, line))”?
答:
0赞
Andria
4/4/2017
#1
正如 Sam Varshavchik 所指出的那样,您实际上可以不做任何事情,因为通过自行将流设置为失败状态来执行所有工作并退出 while 循环,因此永远不会处理。while(getline(cin, line))
&& !cin.eof()
getline
cin.eof
如果在 [输入流] 中到达文件末尾,或者在输入操作期间发生其他错误,则提取也会停止。
这在文档中有说明 cplusplus.com
评论
getline()
false
cin.eof()
getline(cin,line)
!cin.eof()
cin
getline
EOF
std::getline()
!cin.eof()