私はゲームの保存ファイルシステムに取り組んでおり、小さなテストプログラムでファイルを開くことができることを確認し、空かどうかを判断し、空の場合はユーザーにキャラクターを作成するように促し、 not empty ゲームで使用する変数にキャラクターの情報をロードします。これまでのテストでは、メモ帳でファイルを作成し(空のまま)、適切な拡張子で保存し、ファイルを開いて空かどうかをテストしました。
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main ( int argc, char* argv[])
{
struct charFile
{
int chapterNum;
int savePoint;
string firstName;
char gender, hairColor, hairType, hairLength, eyeColor, profession, magic, martialSkills;
bool hasPet;
} character;
fstream save;
char saveFileChoice;
string saveFile;
cout << "Select a File (1, 2, 3, 4, 5, or 6): ";
cin >> saveFileChoice;
saveFile = saveFileChoice + ".charsav";
save.open(saveFile.c_str());
if (!save.good())
{
cout << "Save file cannot be opened.\n";
}
char tempStr[12];
save.getline (tempStr, 256);
if ( tempStr == "EMPTY" )
{
cout << "There is no save data in the file. Starting a new game...\n\n";
cout << "What is your character's name? ";
cin >> character.firstName;
save << character.firstName;
}
return 0;
}
ファイルが空なのに if ステートメントに落ちないのはなぜだろうと思っていました。ファイルに EMPTY ASCII 文字を追加して条件を変更しても。それから私は入れました:
if (!save.good())
{
cout << "Save file cannot be opened.\n";
}
実行すると常にメッセージが表示されるため、何らかの理由でファイルが開かれません。=/理由はわかりませんが。
ファイルをチェックしたところ、.charsav.txt などの形式になっていません。まだ 1.charsav、2.charsav などになっています。簡単で明白な何かが欠けているように感じます。誰かが私のためにそれを指摘できますか?