3

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

运行这个,如果用户输入 tyu(包括字母之间的空格)将使程序将 t 输入变量 a,y 输入变量 b,u 输入变量 c。从本质上讲,它会有点“失败”并自动为 cin 设置值,而不是要求用户为每个值都这样做。

我想要的是检查用户为变量 a 输入的内容是否仅为 1 个字符。

我曾尝试使用 cin.good(),但是在为 cin >> a 输入多个字符后它返回 0;我也尝试过使用 cin.get(a); 然后检查 cin.good()。如果用户输入多个字符,这也返回 0。

有没有办法限制输入一次只能用于一个 cin 操作?

4

2 回答 2

9

您应该逐行阅读您的输入,然后对其进行解析。像这样

std::cout << "Enter a:\n";
std::string input;
std::getline(std::cin, input);
if(input.length() != 1)
   //error
else
   char a = input[0];
于 2013-03-22T16:53:29.257 回答
3

来自 C 语言。您可以使用 getch(); 一次只需要一个字符。

如果你想要多个字符,我的意思是字符串。你使用 getch(); 与循环。getch() 来自 conio.h,getche() 也可用于在控制台上显示。

于 2013-03-22T17:06:47.283 回答