そのため、ユーザーが Ctrl + Z を入力してループを終了するのを待つ必要がある学校のプロジェクトがあります。教師は、これを行う最善の方法は、cin >> x
まだ Ctrl + Z を入力していないかどうかを確認することであると述べました。少しテストを行ったり行ったりした後、問題が何であるかを理解できなかったので、コードの非常に単純なバージョンを作成して、修正できるかどうかを確認しました。本当に何も変わっていません。とにかく、ここに簡単なコードがあります:
#include "Proj_02.h";
vector<int> dog;
string entry = "";
int value = 0;
void main()
{
Menu();
}
void Menu()
{
do
{
//Ask the user to enter a number
cout << "Enter a number: ";
//Save the number to a vector
do
{
cout << "k";
getline(cin, entry);
value = atoi(entry.c_str());
}while(value == 0);
while (cin >> value)
{
cout << "L";
dog.push_back(value);
}
//when the user presses Ctrl + Z stop asking
}while(cin >> entry);
//Display all of the numbers
for(int i = 0;i < dog.size();i++)
{
cout << dog.at(i) << endl;
}
system("PAUSE");
}
したがって、これが実行されると何が起こるかというと、入力が行われた後でも何かを行う前に、コードがさらに 2 つの値を入力するのを待つということです。私の推測では、ある種のバッファ干渉を引き起こしている間に何か関係があると思いますが、cin >> entry
これを修正する方法について確かなアイデアはありません。誰かがそれを助けることができれば、それは素晴らしいことです.