我的问题是,我想从中读取输入,std::cin
但不知道输入有多长。我也必须char
而且不能使用std::string
. 我必须处理两种方法:a)用户输入文本,当他点击 [ENTER] 时,程序停止阅读。b) 用户重定向到可以包含多行std::cin
的文件(如)。.\a.oput < file
编辑:刚刚注意到 std::cin.eof() 在从文件读取的情况下也总是错误的。
对于a)我可以阅读直到 \n 发生。对于 b)编辑:否(我可以阅读直到出现 std::cin.eof()。)但是当我不知道我遇到的是 a) 还是 ab) 问题时,我该如何中断阅读过程?
这就是我所拥有的 a) ...
char buffer = ' ';
while(std::cin >> std::noskipws >> buffer && buffer != '\n')
{
// do some stuff with buffer
}
...和b)
char buffer = ' ';
while(std::cin >> std::noskipws >> buffer)
{
// do some stuff with buffer
}
我也知道std::cin.tellg()
要获取流中的当前位置。
编辑:因此,在文件的情况下,输入流似乎std::cin >> std::noskipws >> buffer
以false
. 上面的代码对 a) 做了什么:
- 它等待用户进行输入并按 [ENTER]
- 然后它遍历用户在最后一行输入的每个字符。
- 然后它再次等待用户进行输入并按 [ENTER]
- 无限等待处理循环
那么我该怎么做呢?