C++ 最終版の戦艦ボード ゲームに基づいてプログラムを作成しています。現在取り組んでいる問題は、ユーザー アカウントの管理方法です。ユーザーがプレイするたびに同じアカウントを使用して、勝敗の記録を追跡できるようにする必要があります。データをファイルに書き込むことはできますが、プレーヤーが再度ログインしたときにそれを読み込んでから、ユーザー名を見つけるために並べ替える必要があります。私はこの部分で立ち往生しています。
これは私が使用しているファイルで、ユーザー名、勝ち、負けとして読み取られます。
Rocky 0 0
Bob 0 0
dave 0 0
Jerry 0 0
Bert 0 0
Ernie 0 0
Marcus 0 0
編集:これは私が何度も繰り返している出力です
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
UserData は構造体です
//begin create/find account function
userData createAccount(userData ud){
//local variables
int playerOption;
//creates object to open files
ifstream infile;
//creates object to open files
ofstream outfile;
do {
cout << "Do you have an existing account?" << endl;
cout << "" << endl;
cout << "Enter 1 for yes or 2 for no:" << endl;
cin >> playerOption;
}
while (playerOption >= 3 || playerOption <= 0);
if (playerOption == 1){
cout << "Enter user name:" << endl;
cin >> ud.name;
//opens file in read mode
infile.open("userData.dat");
//tests to make sure the file is open
if (!infile){
cout << "File open failure!";
}
//creates array of user data
userData userDataArray [SIZE];
//reads data from file into array until end of file
int i=0;
while(i<SIZE){
infile >> userDataArray[i].name;
infile >> userDataArray[i].wins;
infile >> userDataArray[i].losses;
i++;
}
///test output
int j=0;
while (j<SIZE){
cout << userDataArray[j].name << endl;
cout << userDataArray[j].wins << endl;
cout << userDataArray[j].losses << endl;
j++;
}
//end test output
//closes file
infile.close();
}
else if(playerOption == 2){
cout << "Enter user name:" << endl;
cin >> ud.name;
ud.wins = 0;
ud.losses = 0;
//opens file in write mode
outfile.open("userData.dat",ios::app);
//tests to make sure the file is open
if (!outfile){
cout << "File open failure!";
}
//writes userData struct to file
outfile << ud.name << " " << ud.wins << " " << ud.losses << endl;
//closes file
outfile.close();
}
return ud;
//end create/find account function
}