【问题标题】:c++ - writing to a output file from diffrent cpp filesc++ - 从不同的 cpp 文件写入输出文件
【发布时间】:2012-11-22 18:02:42
【问题描述】:

我们有三个不同的 .cpp 文件。 当我在 random.cpp 中创建文件时

    ofstream outfile ("random.log");

然后我在random.cpp文件中写入文件random.log:

    outfile << " something" ;

然后我转到一个不同的 .cpp 文件,例如 StudentCS.cpp,我使用以下命令打开该文件:

    ofstream outfile;
    outfile.open("random.log",std::ios_base::app);

即使我在 random.cpp 中间调用 StudentCS,它也会在所有 random.cpp 输出之后写入所有 StudentCS 输出。我正在尝试从 random.cpp 写入,然后它调用 StudentCS.cpp 应该写一些东西然后回到 random.cpp 再次写入

【问题讨论】:

    标签: c++ file ofstream


    【解决方案1】:

    打开文件一次,然后传递流对象。或者更好:让任何需要记录的模块都可以使用 logger 对象。

    【讨论】:

    • 是的。并且根据谁负责文件写入,可能值得研究依赖模型或单例模型来控制打开文件的生命周期。
    【解决方案2】:

    随机.cpp

    void studentCS(ofstream & outfile);
    void random() {
       ofstream outfile ("random.log");
       outfile << " something" ;
       outfile.close();
       studentCS(outfile);
       outfile.open("random.log",std::ios_base::app);
       outfile << " something write after call to studenCS";
    }
    

    学生CS.cpp

    void studentCS(ofstream & outfile) {
       ofstream outfile("random.log",std::ios_base::app);
       outfile << " something else ";
    }
    

    但请记住,您应该尽量避免打开/关闭操作,这对 CPU 来说很重。

    【讨论】:

    • 在 random.cpp 中调用一个教学函数,该函数调用 StudentCS 中的一个学习函数我不想发送文件我只想在另一个 .cpp 文件中打开它并写入它
    • 然后在调用其他函数之前关闭它,然后使用附加标志重新打开它。
    【解决方案3】:

    我看到您使用的名称是“random.log”。

    这是否意味着您正在编写日志文件?如果是这样,您可以考虑使用为简化此过程而开发的众多日志记录类之一(请参阅12345)。

    另一个想法...

    您正在项目的不同部分打开和关闭文件。其他答案建议传递文件指针。但是如果你真的需要从任何地方写入这个文件并采取适当的预防措施,你可以考虑在这里使用一个全局变量。

    【讨论】:

      猜你喜欢
      • 2014-10-18
      • 1970-01-01
      • 2014-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-24
      • 2012-06-14
      • 2015-04-09
      相关资源
      最近更新 更多