Можно ли передать cout или fout функции?

Я пытаюсь найти способ передать 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;
}

2 ответов


Они оба наследуются от ostream Так что попробуйте это:

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

затем в основном, передайте объект (cout или что-то еще), и он должен работать нормально.


да. Пусть ваша функция будет

sayhello(std::ostream &os);

затем, в функции, вы можете использовать os на месте xout.

(кстати, using namespace std сбрасывает все пространство имен std и не рекомендуется. А using std::cout и все в порядке, хотя.)