1

以前の質問 (条件付きで入力の長いシーケンスを中断しますか? )から発展した質問がありますが、これまでのところ、誰も満足のいく答えを出すことができず、私の努力はすべて失敗しました。

必要がなければ、ユーザーが入力を中断できるようにしようとしています。つまり、以下のコードの場合:

cout << '\n' << "Monster A's name is: ";
cin >> nameA;
cout << '\n' << "Monster A rolled: ";
cin >> rollM_A;
cout << '\n' << "Monster A's Dex is: ";
cin >> DexA;
cout << '\n' << "Monster A's Mod is: ";
cin >> ModA;
cout << '\n' << "Monster A's Level is: ";
cin >> LvlA;

//etc.

実際には最大 12 体のモンスターがサポートされています。ユーザーがそれらのうちの 3 ~ 4 個だけを使用したい場合は、残りをスキップして多くのキーストロークを節約できるようにしたいと思います。すべての変数を 0 に初期化し、後でストレージ ベクターから 0 要素を削除する関数を用意しました。欠けているのは、この入力チェーンから逃れることだけです。次のように、さまざまな形式の while ループ ラッピングを試しました。

while(cin.get() != '#') {
   cout << '\n' << "Monster A's name is: ";
   cin >> nameA;
   //etc...
}

しかし、目的の文字を入力すると、コードはすべてのプロンプト ("Monster A's name is:" など) を繰り返し出力するだけで、先に進んだり、それ以上の入力を受け入れることはありません。# 入力時にループから抜け出すはずなのに、コードが無限ループに陥ってしまったようです。

何か案は?しばらくの間これに固執しており、誰かが別の解決策を提供できるか、少なくとも私自身の欠陥を教えてくれれば非常に感謝しています.

ありがとう!

4

5 に答える 5

-1

「この質問をスキップするには # を押してください」などの情報を出力できますか? 質問をスキップするキーをユーザーに推測させる代わりに?

于 2013-06-17T14:44:22.573 に答える