C++ 如何限制一次输入一个字符?

标签 c++ input

我有一个程序要求用户多次输入,并将该输入存储在不同的 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/

相关文章:

input - 在 Kotlin 中读取控制台输入

java - 按键代码列表(InputProcessor)

css - 与显示 : inline-block; working with Firefox not with Chrome 并排形成组

c++ - #ifdef Q_OS_WIN32,但 windows 函数未在此范围内声明

c++ - 使用 GCC 编译 WineMaker 生成的 MakeFile

C++ 信号/槽 : Slot processing and best C++ Signal library?

c++ - Lua、线程和 C++ 异常

c++ - QTimeEdit C++ 删除填充

jquery - 从输入中减去 div 文本

输入无效方程时 Python 计算器程序崩溃