2013-03-22 241 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()也可用於在控制檯上顯示。

相關問題