2013-03-22 142 views
2

我有一个程序要求用户多次输入输入,并将输入存储在不同的char变量中,然后对这些变量执行操作。C++如何一次限制输入到一个字符?

我的问题是,我想限制输入一次为一个变量工作。 例如:

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; 

运行此,如果用户输入吨ÝU(包括字母之间的间隔)可以让程序进入吨入变量A,Y为变量b和u到变量c。从本质上讲,它会排序“通过”,并自动为cin设置值,而不是要求用户为每个值执行一次。

我想要的是检查用户输入的变量a是否只有1个字符。

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

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

+0

你可以调用'ignore'来终止其他输入(缓慢而痛苦地)。 – chris 2013-03-22 16:52:10

+1

一次使用getline获取一行。放弃每一行上的任何多余的值。 – john 2013-03-22 16:53:30

回答

8

您应该逐行读取输入行然后解析它。因此,

std::cout << "Enter a:\n"; 
std::string input; 
std::getline(std::cin, input); 
if(input.length() != 1) 
    //error 
else 
    char a = input[0]; 
0

从C语言。你可以使用getch();每次只有一个字符。

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