Можно ли передать 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
и все в порядке, хотя.)