DEV Community

Simone Aronica
Simone Aronica

Posted on • Updated on

C++ read file from stdin

I've started to learn c++ and I need a way to read a file line by line directly from stdin. Now what I've tried is this:

freopen("input.txt", "r", stdin);
string buffer;
vector<int> temp = {};
getline(cin, buffer);
for(int elem : buffer) 
  if(elem != ' ')
    temp.push_back(elem - '0');
*dest = temp;

but when I run this code, the console waits for me to insert data via cli instead of reading it from stdin.
What can I do?

Latest comments (2)

Collapse
 
gugglegum profile image
Paul Melekhov

When you didn't define any file as input or pipe from another app, keyboard input is your stdin.

Collapse
 
sfiquet profile image
Sylvie Fiquet

I'm not super familiar with modern C++ but I believe stdin's purpose is for getting input from the console/terminal. So I don't understand why you would read a file from stdin and in any case why you would redefine stdin. Maybe you're supposed to type something like this on the CLI:

myprogram < input.txt

so that file input.txt ends up in the stdin for the program? That's all I can think of.