在C ++问题中使用cin.get()获取用户输入

时间:2010-06-07 20:45:52

标签: c++

我不确定我在这里缺少什么。这是我在网站上找到的代码片段,我将它放在我的程序中以查看它是如何工作的,然后我会根据自己的喜好对其进行修改。我包括iostream,这个代码片段在我的主要功能中。

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

发生的事情是该程序从不要求用户输入。它似乎打印出两个cout语句然后结束。我从中获取片段的网站显示了输出:

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

3 个答案:

答案 0 :(得分:1)

我的建议是忘记此代码段的存在,然后查找std::getline。你可以使用这样的东西:

#include <string>
#include <iostream>

int main() {
    std::string buffer;

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

当然,您可以使用std::cin >> buffer之类的流提取,但这样做只会读取输入的单个“字”,而不是像之前的代码那样整行。

答案 1 :(得分:1)

代码返回当时输入缓冲区中的内容,很可能没有。

只需检查文件中的某些数据类型,然后运行程序并添加“&lt; myfile”以查看数据是否已加载到缓冲区中。

如果你想等待数据,你需要做一些控制台操作。

答案 2 :(得分:0)

要将新行作为分隔符,您应该使用

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