С++: Как передать файл в качестве аргумента?

Я инициализировал и открыл файл в одной из функций, и я должен выводить данные в выходной файл. Как передать файл в качестве аргумента, чтобы я мог выводить данные в один выходной файл с помощью другой функции? Например:

void fun_1 () {
 ifstream in;
 ofstream outfile;
 in.open("input.txt"); 
 out.open("output.txt");
 ////function operates////
 //........
 fun_2()
}
void fun_2 () {
 ///// I need to output data into the output file declared above - how???
}
3 ответа

Вторая функция должна взять ссылку на поток в качестве аргумента, т.е.

void fun_1 () 
{
 ifstream in;
 ofstream outfile;
 in.open("input.txt"); 
 out.open("output.txt");
 fun_2( outfile );
}
void fun_2( ostream& stream )
{
 // write to ostream
}


Передайте ссылку на поток:

void first() {
 std::ifstream in("in.txt");
 std::ofstream out("out.txt");
 second(in, out);
 out.close();
 in.close();
}
void second(std::istream& in, std::ostream& out) {
 // Use in and out normally.
}

Вы можете #include получать объявления вперед для istream и ostream, если вам нужно объявить second в заголовке и не хотите, чтобы файлы, содержащие этот заголовок, были загрязнены ненужными определениями.

Объекты должны передаваться с помощью ссылки const, поскольку вставка (для выходных потоков) и извлечения (ввода) изменяет объект потока.


Передайте ссылку на поток.

licensed under cc by-sa 3.0 with attribution.