Kasun Jalitha
Kasun Jalitha

Reputation: 771

How to take this kind of a STDIN inputs in c++?

In lots of hackathon they provide testcases. So in those test cases they provide inputs in different ways through STDIN. This is one of the situation I struggle at all.

This is one kind of a input: (This is one testcase)

Mike
John
Ahmed
Sangha
Daniel
Ann

So here I have 6 inputs. But they don't provide number of inputs. So I can't use for loop or while loop to take this input. Because I don't know how many iteration I should do. So I have to take inputs until end. But this is not a input from a file. So I can't use EOF as well. This input is from STDIN. So how can I take this kind of input and store it in an array? Also I don't know how many elements should create in array. Because I don't know how many number of inputs are there. (different testcases may contain different number of inputs). How can I solve this kind of a problem?

Thank you so much for the help!

Upvotes: 0

Views: 84

Answers (2)

mahee96
mahee96

Reputation: 842

The input here clearly shows you how many entries are presented. Note that each entry is on a newline so, considering it as a delimiter, you can parse your input stream and get the entries separated and also get the count of entries.

C++ getline() does this exactly:

istream& getline( istream& is, string& str, char delim );

Last param to getline is optional because it uses '\n' as default.

If you want to do it the raw way, you could setup a file pointer and do a lookahead for '\n' and read everything before it into new item of a variable array(vector) ...do this repeatedly until u reach EOF of stream(or filestream)

Upvotes: 1

TheEagle
TheEagle

Reputation: 5992

You should be able to use EOF, because stdin is a file (at least on linux)

Upvotes: 1

Related Questions