保存系统不打开fstream文件?

时间:2012-08-04 21:49:35

标签: c++ save fstream

我正在为一个游戏保存文件系统,并试图确保我可以在一个小的测试程序中打开该文件,确定它是否为空,如果它为空则提示用户创建一个字符,如果它不是空的,则将角色的信息加载到用于游戏的变量中。到目前为止,在我的测试中,我已经在记事本中创建了文件(将它们留空),使用适当的扩展名保存它们,并尝试打开文件并测试它们是否为空。

#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等。我觉得我错过了一些简单明了的东西。任何人都可以为我指出它吗?

1 个答案:

答案 0 :(得分:0)

if(!strcmp(tempStr,“EMPTY”))是你比较字符串的方式