こんにちは、私はrpgゲームである学校プロジェクトに取り組んでいます。特定のファイルを通過するload_game関数を作成し、そのファイルにユーザーが入力したIDがあるかどうかを確認し、その特定の文字の統計をグローバル変数にロードします。 問題は、ユーザーがオプションを見ることができるようにファイルの内容を印刷する機能を作ったが、全く何も印刷しないということです。新しいプレーヤーで同じファイルを塗りつぶすnew_player関数を作成しました。ファイルを別のファイルに変更し、そのファイルに手動で書き込むと動作します。ここでは、コードは次のようになります。関数はC++でファイルの内容を読み込んで印刷しない
void load_game()
{
bool loading = true;
do{
ifstream in_stream("Players.txt");
ofstream out_stream("Players.txt");
cout << " The last son of Allheaven " << endl;
cout << "+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+" << endl;
char ch;
in_stream.clear();
in_stream.seekg(0, in_stream.beg);
while (in_stream.get(ch))
{
cout << ch;
}
cout << " Enter -1 to return to main menu " << endl;
cout << "+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+" << endl;
cout << endl << "Enter a number to access one of the above options: ";
in_stream.clear();
in_stream.seekg(0, in_stream.beg);
int choice;
cin >> choice;
while (in_stream >> ID >> Name >> Class >> HP >> Mana >> ATK >> ability_dmg >> Defense >> magic_resist >> player_exp >> player_level)
{
if (choice == ID)
{
/*game_start();*/
loading = false;
break;
}
else if (choice == -1)
{
system("cls");
main_menu();
}
else if (in_stream.eof())
{
in_stream.clear();
in_stream.seekg(0, in_stream.beg);
cout << endl << "Error! Invalid ID !" << endl;
}
}
in_stream.close();
out_stream.close();
} while (loading);
}
ありがとう、私はファイルを切り捨てることに気付かず、iofstreamで開くことができます。 –
@AlemTuzlak同じ機能のファイルに*書き込み*する予定ですか?次に、最初に関数の名前が悪いので、どのようにファイルに書き込むべきか、どこでどこを書くべきかについて考えなければなりません。あなたが関数内のファイルに書き込むべきでないなら、単純な 'ifstream'を使います。 –