【问题标题】:outputting to a file in a recursive function在递归函数中输出到文件
【发布时间】:2014-11-11 21:51:15
【问题描述】:

我有一个程序是一个游戏锦标赛,它递归地战斗并从玩家容器中删除玩家,直到只剩下一个玩家。这是纸牌游戏战争,每场战斗我都需要将游戏中每场战斗的获胜者输出到一个文件中。例如,它看起来像这样

John vs James
    Battle 1: James wins
    Battle 2: John wins
    ...
    Battle 5: James wins, John is out of cards. James wins the game

但是由于这是一场锦标赛,John 被从容器中移除,接下来的两个人开始战斗,所以我们从 16 到 8 到 4 到 2 名玩家,最后是获胜者。我已经完成了这一切的代码,我需要知道如何递归地完成这部分:

ofstream outFile;
outFile.open(argv[2]);

outFile << player1Name << " vs. " << player2Name << endl;

outFile << "Battle" << //number battle & winner etc, etc

我想这样做,以便每次运行程序时,它都会覆盖文件中的所有内容,但每次在锦标赛中进行游戏时,它只会添加到前一场战斗的结尾。我有一些想法,但我不确定最好的方法是什么。我在考虑放

ofstream outFile;
outFile.open(argv[2]);

在 driver.cpp 文件中,然后调用递归函数 game.tournament() 但将 game.tournament(outFile) 传入 void Game::tournament(ofstream& outFile) 然后使用 outFile

还要明确基本情况是当玩家队列的 .size()

【问题讨论】:

    标签: c++ recursion


    【解决方案1】:

    在程序开始时,在调用递归之前像这样打开文件

    outFile.open(argv[2], std::ofstream::trunc);
    

    这将截断文件中的所有内容,然后将其关闭。

    接下来在你的递归函数中,像这样打开要追加的文件

    outFile.open(filename, std::ofstream::app);
    

    reference for ofstream here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 2021-09-28
      • 2020-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多