我使用以下代码:
#include <iostream>
using namespace std;
int main(int argc, char **argv) {
string lineInput = " ";
while(lineInput.length()>0) {
cin >> lineInput;
cout << lineInput;
}
return 0;
}
使用以下命令:
echo "Hello" | test.exe
结果是无限循环打印“Hello”。如何让它读取并打印单个“Hello”?
答案 0 :(得分:24)
string lineInput;
while (cin >> lineInput) {
cout << lineInput;
}
如果你真的想要整行,请使用:
string lineInput;
while (getline(cin,lineInput)) {
cout << lineInput;
}
答案 1 :(得分:12)
当cin
无法提取时,它不会更改目标变量。因此,您的程序上次成功读取的任何字符串都会卡在lineInput
。
您需要检查cin.fail()
和Erik has shown the preferred way to do that。