C ++:如何将文件作为参数传递?

时间:2011-06-08 02:37:27

标签: c++ file arguments

我在其中一个函数中初始化并打开了一个文件,我应该将数据输出到输出文件中。如何将文件作为参数传递,以便我可以使用其他函数将数据输出到同一输出文件中?例如:

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 个答案:

答案 0 :(得分:4)

你的第二个函数需要引用流作为参数,即

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
}

答案 1 :(得分:3)

传递对流的引用:

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获取ostreamsecond的转发声明被不必要的定义污染。

对象必须通过非const引用传递,因为插入(用于输出流)和提取(输入)会修改流对象。

答案 2 :(得分:0)

传递对流的引用。