gpt4 book ai didi

c++ - while cin.get 在从文件加载时导致无限循环

转载 作者:行者123 更新时间:2023-11-30 03:57:17 33 4
gpt4 key购买 nike

我有以下代码(这只是更大应用程序的一部分,但问题似乎来自以下代码):

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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com