问题
I am using the following code:
#include <iostream>
using namespace std;
int main(int argc, char **argv) {
string lineInput = " ";
while(lineInput.length()>0) {
cin >> lineInput;
cout << lineInput;
}
return 0;
}
With the following command:
echo "Hello" | test.exe
Thes result is an infinate loop printing "Hello". How can I make it read and print a single "Hello"?
回答1:
string lineInput;
while (cin >> lineInput) {
cout << lineInput;
}
If you really want full lines, use:
string lineInput;
while (getline(cin,lineInput)) {
cout << lineInput;
}
回答2:
When cin
fails to extract, it doesn't change the target variable. So whatever string your program last read successfully is stuck in lineInput
.
You need to check cin.fail()
, and Erik has shown the preferred way to do that.
来源:https://stackoverflow.com/questions/5446161/reading-piped-input-with-c