Brundle
Brundle

Reputation: 171

Getting user input using cin.get() in C++ question

I'm not sure what I'm missing here. This is a snippet of code that I found on a site and I placed it in my program to see how it works and then I would modify it to my liking later. I am including iostream and this code snippet is in my main function.

char buffer[80];
cout << "Enter the string: ";
cin.get(buffer, 79);       // get up to 79 or newline
cout << "Here's the buffer:  " << buffer << endl;

What is happening is that the program never asks for the user input. It just seems to print out the two cout statements and then ends. The site where I got the snippet from shows the output of:

Enter the string: Hello World
Here's the buffer: Hello World

Upvotes: 0

Views: 2800

Answers (3)

segfault
segfault

Reputation: 5939

To get new line as delimiting character, you should use

cin.get(buffer, 79, '\n');

Upvotes: 0

florin
florin

Reputation: 14326

The code returns whatever was in the input buffer at the time, most likely nothing.

Just to check type some data in a file, then run your program and add "< myfile" to see if the data gets loaded in your buffer.

You need to do some console manipulation if you want to wait for data.

Upvotes: 1

Jerry Coffin
Jerry Coffin

Reputation: 490128

My advice would be to forget the existence of this snippet and look up std::getline instead. You'd use it something like this:

#include <string>
#include <iostream>

int main() {
    std::string buffer;

    std::getline(buffer, std::cin);
    std::cout << "Here's the buffer: " << buffer;
    return 0;
}

You can, of course, use stream extraction like std::cin >> buffer, but doing so will read only a single "word" of input, not a whole line like your previous code tried to do.

Upvotes: 1

Related Questions