以前の質問 (条件付きで入力の長いシーケンスを中断しますか? )から発展した質問がありますが、これまでのところ、誰も満足のいく答えを出すことができず、私の努力はすべて失敗しました。
必要がなければ、ユーザーが入力を中断できるようにしようとしています。つまり、以下のコードの場合:
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:" など) を繰り返し出力するだけで、先に進んだり、それ以上の入力を受け入れることはありません。# 入力時にループから抜け出すはずなのに、コードが無限ループに陥ってしまったようです。
何か案は?しばらくの間これに固執しており、誰かが別の解決策を提供できるか、少なくとも私自身の欠陥を教えてくれれば非常に感謝しています.
ありがとう!