Reading piped input with C++
25,221
Solution 1
string lineInput;
while (cin >> lineInput) {
cout << lineInput;
}
If you really want full lines, use:
string lineInput;
while (getline(cin,lineInput)) {
cout << lineInput;
}
Solution 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.
Related videos on Youtube
Author by
Boppity Bop
I hate networking, social networking and all sorts of reliance on other people. including asking for help on SO.
Updated on April 28, 2022Comments
-
Boppity Bop about 2 years
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
This result is an infinite loop printing "Hello". How can I make it read and print a single "Hello"?
-
UpmostScarab about 7 yearsthis does not allow you to make user input after.