C ++: как передать файл в качестве аргумента? - PullRequest
3 голосов
/ 08 июня 2011

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

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 ]

4 голосов
/ 08 июня 2011

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

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
}
3 голосов
/ 08 июня 2011

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

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 <iosfwd> получить предварительные объявления для istream и ostream, если вам нужно объявить second в заголовке и не хотите, чтобы файлы, содержащие этот заголовок, были загрязнены ненужными определениями.

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

0 голосов
/ 08 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...