如果没有提供管道,读取 std::cin 会挂起
Reading std::cin hangs if no pipe is provided
我有一个通用形式的函数
void readStuff(std::istream& input){
int var;
while(input>>var){
//... do stuff
}
}
其中输入作为 std::cin 或 std::ifstream 传递,具体取决于是否设置了命令行选项 -c。从文件读取
myprog file.txt
工作正常。如果使用 std::cin,则
cat file.txt | myprog -c
这也很好用。但是,如果用户尝试
它会挂起
myprog -c
如何在我的代码中处理这种情况?我试过检查 ifstream 的标志,但在所有情况下它们都是 0,除了 ifstream.good().
我有一个通用形式的函数
void readStuff(std::istream& input){
int var;
while(input>>var){
//... do stuff
}
}
其中输入作为 std::cin 或 std::ifstream 传递,具体取决于是否设置了命令行选项 -c。从文件读取
myprog file.txt
工作正常。如果使用 std::cin,则
cat file.txt | myprog -c
这也很好用。但是,如果用户尝试
它会挂起myprog -c
如何在我的代码中处理这种情况?我试过检查 ifstream 的标志,但在所有情况下它们都是 0,除了 ifstream.good().