C++ を練習するために、ユーザーが名前の後にスコアを入力できるようにし、ユーザーが名前を入力してその名前が入力されたスコアを取得できるようにする簡単なプログラムを作成しようとしています。プログラムは、名前の入力が完了したらエスケープ文字 (ctrl + z) を入力するまで正常に動作します。エスケープ文字を入力すると、プログラムは「スコアを検索するために学生の名前を入力してください」という行を出力しますが、ユーザーは許可しません。名前を入力し、代わりに「Press any key to exit」と読み上げます。これを修正する方法に完全に困惑しており、どんな助けも大歓迎です。
#include "stdafx.h"
#include <std_lib_facilities.h>
int main()
{
vector <string>names;
vector <int>scores;
string n = " "; // name
int s = 0; // score
string student = " ";
cout << "Enter the name followed by the score. (Ex. John 89)" << endl;
while(cin >> n >> s)
{
for(size_t i = 0; i < names.size(); ++i)
{
if(n == names[i])
{
cout << "Error: Duplicate name, Overwriting" << endl;
names.erase(names.begin() + i);
scores.erase(scores.begin() + i);
}
}
names.push_back(n);
scores.push_back(s);
}
cout << "Name: Score:" << endl;
for(size_t j = 0; j < names.size(); ++j)
{
cout << names[j];
cout <<" " << scores[j] << endl;
}
cout << "Enter name of student to look up their score" << endl;
cin >> student;
for(size_t g = 0; g < names.size(); ++g)
{
if(student == names[g])
{
cout << "Score: " << scores[g] << endl;
}
}
keep_window_open();
return 0;
}