ここに「非効率的な」コードがたくさんあると確信していますが、私はちょうど学んでいます。outfileエラーへの読み書き(おそらく単純な修正)
私は(以前のハイスコアを表示したときに、私はここに持ってる問題は、次の形式で「Score.txt」に保存されている:
NAME
score right wrong
だから、それは次のようになります。
Bob
40 2 2
以前のハイスコア情報(Score = 40、Right = 2、Wrong = 2)を表示する代わりに、-80883004などの数字が表示されます。
誰でも次のコードからこの原因が考えられますか?
void Score(int score, string name, int qRight, int qWrong)
{
infile.open("Score.txt");
string nameHS;
int scoreHS, rightHS, wrongHS;
char choice;
getline(infile, nameHS);
infile >> scoreHS;
infile >> rightHS;
infile >> wrongHS;
system("CLS");
cout << "You have completed Trivia!\n\n";
cout << setw(30) << "Your Score " << setw(30) << "High Score " << '\n';
cout << setw(30) << "--------------" << setw(30) << "--------------" << '\n';
cout << setw(25) << "| Score: " << setw(3) << score << " |"
<< setw(25) << "| Score: " << setw(3) << scoreHS << " |" << '\n';
cout << setw(25) << "| Right: " << setw(3) << qRight << " |"
<< setw(25) << "| Right: " << setw(3) << rightHS << " |" << '\n';
cout << setw(25) << "| Wrong: " << setw(3) << qWrong << " |"
<< setw(25) << "| Wrong: " << setw(3) << wrongHS << " |" << '\n';
cout << setw(30) << "--------------" << setw(30) << "--------------" << "\n\n";
if (score > scoreHS)
{
cout << "Congratulations! You beat the high score!\n\n";
cout << "Would you like to save your score?\n";
cout << "(Y/N): ";
cin >> choice;
if (choice == 'y' || choice == 'Y')
saveScore(score, name, qRight, qWrong);
else if (choice == 'n' | choice == 'N')
cout << "\nPlay again soon!\n\n";
else
cout << "Invalid option... game save incomplete! Good-Bye!\n\n";
}
outfile.close();
}
void saveScore(int score, string name, int qRight, int qWrong)
{
system("CLS");
cout << "Your HIGH SCORE has been saved!\n";
cout << "Good luck next game ....\n\n";
outfile.open("Score.txt", ofstream::out | ofstream::trunc);
outfile << name << '\n';
outfile << score << ' ' << qRight << ' ' << qWrong << '\n';
outfile.close();
}
IOが間違っている(またはそれが起こる前に)ときは、任意のオープンまたは読み取り機能の結果を制御するのがよいでしょう。なぜ、getlineとstream extractorsを混在させるのですか? –
何が良い選択肢でしょうか?私はこれを初めて知っていることを覚えておいてください...私は、ストリーム抽出プログラムが何であるか完全にはわかりませんか?あなたはgetlineとinfile >>を一緒にすることを指していますか? – Brice