Reading piped input with C++

user181351 picture user181351 · Mar 27, 2011 · Viewed 22.7k times · Source

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"?

Answer

Erik picture Erik · Mar 27, 2011
string lineInput;
while (cin >> lineInput) {
  cout << lineInput;
}

If you really want full lines, use:

string lineInput;
while (getline(cin,lineInput)) {
  cout << lineInput;
}