我有以下代码(这只是更大应用程序的一部分,但问题似乎来自以下代码):
char inputChar;
while (cin.get(inputChar)){
cout<< inputChar<< "\n";
}
从控制台向应用程序提供输入时,例如: 'echo "aaaaa aaaaa"|tst'(上面的程序已编译为 tst.out)程序正常工作,但是当我通过文本文件(即 './tst mytest.txt')提供输入时,它似乎遇到无限循环(光标只是移动到下一行并保持在那里,再也不会得到提示),无论文件本身的内容如何。
有没有人知道为什么会发生这种情况,以及我可以采取什么措施来解决此问题。
ps: 我正在 unix 终端上编译和运行它。
谢谢
最佳答案
如果你想同时处理文件和 cin 输入:
std::ifstream myFile;
if (argc > 1)
{
myFile.open(argv[1]);
}
if (myFile.is_open())
{
readMyInput(myFile);
myFile.close();
} else
{
readMyInput(std::cin);
}
void readMyInput(std::istream &inputStream)
{
char myCharacter;
while (inputStream.get(myCharacter))
{
cout<< myCharacter<< "\n";
}
}
如果你不想打开一个文件:cat input.txt | ./tst.out
将提供 std::cin
输入流
关于c++ - while cin.get 在从文件加载时导致无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28074834/