有什么好的理由:
std::string input;
std::getline(std::cin, input);
getline调用不会等待用户输入? cin的状态是否以某种方式搞砸了?
答案 0 :(得分:5)
在阅读其他一些数据后,您很可能会尝试读取字符串,例如int
。
考虑输入:
11
is a prime
如果您使用以下代码:
std::cin>>number;
std::getline(std::cin,input)
getline
只会在11之后读取换行符,因此您会得到不等待用户输入的印象。
解决此问题的方法是使用虚拟getline
来使用数字后的新行。
答案 1 :(得分:2)
我已经测试了以下代码,它运行正常。
#include <iostream>
using namespace std;
int main()
{
string input;
getline(cin, input);
cout << "You input is: " << input << endl;
return 0;
}
我想在你的程序中你可能已经在输入缓冲区中有了一些东西。
答案 2 :(得分:0)
此代码不起作用:
#include <iostream>
#include <string>
int main()
{
int nr;
std::cout << "Number: ";
std::cin >> nr;
std::string input;
std::cout << "Write something: ";
getline(std::cin, input);
std::cout << "You input is: " << input << std::endl;
return 0;
}
现在可以使用了
#include <iostream>
#include <string>
int main()
{
int nr;
std::cout << "Number: ";
std::cin >> nr;
std::string x;
std::getline(std::cin,x);
std::string input;
std::cout << "Write something: ";
getline(std::cin, input);
std::cout << "You input is: " << input << std::endl;
return 0;
}