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

26,905

Solution 1

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.

Solution 2

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.)

Share:
26,905
ChiefTwoPencils
Author by

ChiefTwoPencils

Wanna Smile?!?

Updated on January 15, 2020

Comments

  • ChiefTwoPencils
    ChiefTwoPencils over 4 years

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