C ++读取和写入同一文件是在第三次迭代时清除文件

时间:2014-11-30 20:04:13

标签: c++ file fstream readfile

所以我正在为个人项目制作游戏。我从未读过和写入同一个文件,但我正在为自己尝试。目前,我第一次将PlayFile的第一行设置为true。然后我用false写它,然后计划用信息提交文件。程序运行,看到true,请求输入然后用false写入true,然后为输入的用户名添加第二行。

当我在此之后检查文件时,它说: 假 玩家名称(无论输入是什么)

大!它正在发挥作用。

不,不,不是。一旦我第三次运行该程序,它会显示“欢迎回到玩家名称(无论输入是什么)!”

然后它会清除文件中的所有行。

任何输入都会有所帮助。

void on_Launch()
{
    //Sets the title of the console screen
    SetConsoleTitle("Game Version: 1.0 --- No Grpahics");

    //Opens PlayerFile to check for new or returning player
    std::ifstream readFromPlayerFile("PlayerFile.txt");

    std::string getFileInput;
    getline(readFromPlayerFile, getFileInput);  //grabbing the first line of the file preloaded

    std::ofstream writeToPlayerFile("PlayerFile.txt");

    if (readFromPlayerFile.is_open())  //checking if the file is open
    {

        if (getFileInput == "true")   //Creating the player profile after first check.
        {
            Player_File newPlayer;
            readFromPlayerFile.close();

            if (writeToPlayerFile.is_open())
            {
                writeToPlayerFile << "false\n";
                writeToPlayerFile << newPlayer.getPlayerName() + "\n";
            }
        }
        //else error code maybe?

        if (getFileInput == "false")
        {   
            getline(readFromPlayerFile, getFileInput);
            Player_File returningPlayer(getFileInput);

            std::cout << "Welcome back " << returningPlayer.getPlayerName() << "!" << std::endl;
            readFromPlayerFile.close();

        }
    }
    else 
        std::cout << code101 << std::endl; //checking if the file failed to open

    //readFromPlayerFile.close();
    //writeToPlayerFile.close();
}

1 个答案:

答案 0 :(得分:0)

std::ofstream ofs;
ofs.open("test.txt", std::ofstream::out | std::ofstream::trunc);
ofs.close();

只需使用truncate-option打开要写入的文件,即可删除内容。

http://www.cplusplus.com/reference/fstream/ofstream/open/