我有一个程序要求用户多次输入,并将该输入存储在不同的 char 变量中,然后对这些变量执行操作。
我的问题是我想限制输入一次只能处理一个变量。 例如:
char a = 'a', b = 'b', c = 'c';
cout << "Enter a ";
cin >> a;
cout << "\nEnter b ";
cin >> b;
cout << "\nEnter c ";
cin >> c;
cout << "Entered chars were " << a << ", " << b << ", " << c;
运行此程序,如果用户输入 t y u(包括字母之间的空格),程序会将 t 输入变量 a,将 y 输入变量 b,将 u 输入变量 c。从本质上讲,它会有点“落空”并自动为 cin 设置值,而不是要求用户为每个值都这样做。
我想要的是检查用户为变量 a 输入的内容是否仅为 1 个字符。
我试过使用 cin.good(),但是在为 cin >> a 输入多个字符后它返回 0; 我也尝试过使用 cin.get(a);然后检查 cin.good()。如果用户输入多个字符,这也会返回 0。
有没有办法限制输入一次只能用于一个 cin 操作?
最佳答案
您应该逐行读取您的输入,然后对其进行解析。因此
std::cout << "Enter a:\n";
std::string input;
std::getline(std::cin, input);
if(input.length() != 1)
//error
else
char a = input[0];
关于C++ 如何限制一次输入一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15575799/