Is it possible to pass cout or fout to a function?

2019-01-14 21:31发布

I'm trying to find a way to pass fout or cout to a function. I realize there are logically easy ways to deal with this, like put ifs in any function that outputs data or even just write the function both ways. However, that seems primitive and inefficient. I don't believe this code would ever work, I'm putting it here to ensure it's easy to see what I'd "like" to do. Please be aware that I'm taking a algorithm design class using c++, I'm in no way a seasoned c++ programmer. My class is limited to using the headers you see.

#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;
}

2条回答
迷人小祖宗
2楼-- · 2019-01-14 21:43

Yes. Let your function be

sayhello(std::ostream &os);

Then, in the function, you can use os in place of xout.

(By the way, using namespace std dumps the entire std namespace and is not recommended. A using std::cout and the like is all right, though.)

查看更多
冷血范
3楼-- · 2019-01-14 22:00

These both inherit from ostream so try this:

void sayHello(ostream& stream)
{
    stream << "Hello World";
    return;
}

Then in main, pass in the object (cout or whatever) and it should work fine.

查看更多
登录 后发表回答