3

ユーザーに入力を数回入力するように求め、その入力をさまざまな char 変数に格納してから、それらの変数に対して処理を行うプログラムがあります。

私の問題は、入力を一度に 1 つの変数に対して機能するように制限したいということです。例えば:

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 を返します。

入力を一度に 1 つの cin 操作だけに制限する方法はありますか?

4

2 に答える 2

9

入力を 1 行ずつ読み取ってから解析する必要があります。そのような

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(); を使用できます。一度に 1 文字しか取りません。

複数の文字が必要な場合は、文字列を意味します。getch(); を使用します。ループで。getch() は conio.h からのもので、getche() はコンソールに表示することもできます。

于 2013-03-22T17:06:47.283 に答える