要求用户输入字符串然后输入字符串

时间:2013-08-28 19:14:19

标签: c++

我正在编写一个简单的程序,要求用户输入一个字母。然后我希望他输入一个短语。当它只是一个字符串我没有问题。

char c;
string s;
cin >> c;
cin >> s;

但是当我想要一个短语时

cin >> c;
getline(cin, s);

当我在用户输入一个字母并点击输入后运行该程序时,我没有机会输入该短语。当然,如果我输入字符并在空格后输入一个短语,程序就可以正常工作。

相反,当我输入一个字符,然后使用第一个方法在空格后输入一个字符串时,它不会记录字符串。

为什么会这样做?

2 个答案:

答案 0 :(得分:3)

当你写一个字符然后按回车键时,实际上有两个字符被发送到缓冲区:字符本身和\n作为按下回车键的结果。只有cin >> c;仍在缓冲区中时,\n才会读取第一个字符。由于std::getline()在遇到\n字符之前读取所有内容,并且因为\n是它遇到的第一个字符,所以它不会读取任何内容并且程序终止。在std::cin.ignore();之前添加\n(忽略std::getline),代码将有效。

答案 1 :(得分:0)

由于c只接受一个字符,因此用户按下的输入键被赋予s,因此不会记录除此之外的任何内容。只按一个键,不输入该字符。或者只是使用一个字符串。