是否可以将cout或fout传递给函数?

Chi*_*ils 23 c++ fstream ofstream

我正试图找到一种方法将fout或cout传递给函数.我意识到有一些逻辑上简单的方法可以解决这个问题,例如将ifs放在任何输出数据的函数中,或者甚至只是双向编写函数.然而,这似乎是原始的和低效的.我不相信这段代码会起作用,我把它放在这里是为了确保我很容易看到我喜欢做什么.请注意,我正在使用c ++进行算法设计课程,我绝不是一个经验丰富的c ++程序员.我的课程仅限于使用您看到的标题.

#include <iostream>
#include <iomanip>
#include <fstream>

using namespace std;
void helloWorld(char);
ofstream fout;

int main()
{
    fout.open("coutfout.dat");
    helloWorld(c);
    helloWorld(f);

    return 0;
}
void helloWorld(char x)
{
    xout << "Hello World";
    return;
}
Run Code Online (Sandbox Code Playgroud)

Kev*_*son 41

这两个都继承自ostream试试这个:

void sayHello(ostream& stream)
{
    stream << "Hello World";
    return;
}
Run Code Online (Sandbox Code Playgroud)

然后在main中,传入对象(cout或其他),它应该工作正常.

  • 没问题.查看http://en.cppreference.com/w/cpp/io/basic_ostream作为基类. (3认同)

thb*_*thb 12

是.让你的功能

sayhello(std::ostream &os);
Run Code Online (Sandbox Code Playgroud)

然后,在函数中,您可以使用os代替xout.

(顺便说一句,using namespace std转储整个std命名空间,不建议使用.但是A using std::cout等等都可以.)