#include <iostream>
#include <string>
using namespace std;
int main(){
int a1,a2,a3,a4;
cin>>a1>>a2>>a3>>a4;
string a;
getline(cin,a);
return 0;}
我有这个代码。我无法输入“a”的值。请帮助我
最佳答案
您可以使用 std::ws
从输入流中丢弃前导空格。
#include <iostream>
#include <string>
int main()
{
int a1, a2, a3, a4;
std::cin >> a1 >> a2 >> a3 >> a4;
std::string a;
std::getline(std::cin >> std::ws, a);
return 0;
}
cin
实际上将整数和一个 '\n'
存储在输入缓冲区中。
因此,当流到达 getline
语句时,它只会得到一个 '\n'
。
无论如何,直接读取数字是有问题的:当 cin
收到它无法处理的输入时,它会进入失败状态。
它无法处理的输入留在输入流中并被忽略,直到“失败”状态被清除 (std::cin.clear()
)。
所以你应该检查输入流是否无效(!std::cin
):
std::cin >> a1;
if (!std::cin)
{
std::cin.clear();
std::cin.ignore(std::numeric_limits<streamsize>::max(),'\n');
// Get the input again / handle the error
}
关于C++ getline cin错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35717248/