【问题标题】:C++ function cout redirect to fileC++ 函数 cout 重定向到文件
【发布时间】:2015-04-23 01:29:13
【问题描述】:

假设我有一个名为print 的简单函数,其中有一个循环使用cout 将1-5 打印到控制台。

有没有办法可以做类似的事情:

file << print ();

要将print 的输出保存到文件中?显然假设我用ofstream 正确打开了文件,以及所有内容。

【问题讨论】:

    标签: c++ file redirect cout


    【解决方案1】:

    假设print 是一个void 函数,其输出硬编码为cout,您无能为力:输出将由执行环境对输出流的分配控制(默认为控制台或使用&gt;myoutput.txt 重定向文件)。

    如果您希望您的程序控制输出的去向,请将ostream&amp; 传递给您的print 函数,并将其用于输出:

    void print(ostream& ostr) {
        // use ostr instead of cout
        ostr << "hello, world!" << endl;
    }
    

    如果您希望print 输出到控制台或默认输出,请调用

    print(cout);
    

    如果您希望它写入文件,请创建 ofstream,并将其传递给 print:

    ofstream file("hello.txt");
    print(file);
    

    【讨论】:

      【解决方案2】:

      “有办法吗?”:不……不改变print() 和/或在调用者中添加更多代码。当你说...

      file << print();
      

      ...发送到文件流的内容是print() 返回的内容。正如你所说的print() 正在将所需的输出发送到std::cout,返回值表面上不会在file 中包含我们想要的任何内容,所以除非它是一个空字符串,否则调用者最好不要写@987654328 @。

      相反,调用者应该在调用print() 之前将输出转移到cout 到file:James' answer here 显示了如何做到这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-06
        • 1970-01-01
        • 1970-01-01
        • 2013-11-07
        • 2011-11-24
        • 2017-05-24
        相关资源
        最近更新 更多