读两个字符串作为一个?

时间:2015-04-21 02:34:15

标签: c++ string

我正在制作一个制作列表的程序,但无法添加多个单词的内容。 (即流行石或卫生纸)

cout<<"What would you like to add?"<<endl;
    string NewItem;
    cin>>NewItem;

现在我正在使用cin,但我看到了关于getline()的一些内容,但没有关于它是否会对我有所帮助。当我尝试这一切时,我得到的是运行时错误,所以我不确定出了什么问题。

getline(cin, NewItem);

这就是我在尝试时取代cin的原因。 运行时错误没有查找用户输入,它只是暂停了一秒钟。

2 个答案:

答案 0 :(得分:1)

你不应该混合getlinecin >>(或者,如果使用,请谨慎使用,因为cin会在缓冲区中留下可能最终出现的空格&#34;通过getline吃掉了#34;所以你必须忽略它们。仅使用getline,例如

#include <iostream>

using namespace std;

int main()
{
    cout << "What would you like to add?" << endl;
    string NewItem;
    getline(cin, NewItem);

    std::cout << "You added: " << NewItem << std::endl;
}

答案 1 :(得分:0)

std::cin将数据提取到字符串变量,直到它看到流中的分隔符字符。新行和空格是此功能的分隔符。这就是你无法读取字符串的原因,例如&#34;流行摇滚&#34;完全。它将读取第一个空格并停止从流中读取。