C++ "cin" only reads the first word [duplicate]

Solution 1:

Using >> on a stream reads one word at a time. To read a whole line into a char array:

cin.getline(str, sizeof str);

Of course, once you've learnt how to implement a string, you should use std::string and read it as

getline(cin, str);

It would also be a very good idea to get a compiler from this century; yours is over 15 years old, and C++ has changed significantly since then. Visual Studio Express is a good choice if you want a free compiler for Windows; other compilers are available.

Solution 2:

cin>>str;

This only reads in the next token. In C++ iostreams, tokens are separated by whitespace, so you get the first word.

You probably want getline, which reads an entire line into a string:

getline(cin, str);