通过另一个功能打开一个fstream

时间:2015-11-22 12:48:35

标签: c++11 fstream

我正在创建一个程序,在main()中对fstream进行decalares,但在另一个函数open_file()中打开它,并通过另一个函数print()打印该文件。但似乎文件会在open_file()结束时自动关闭,因为print()没有显示输出。

这是我的代码。

#include <iostream>
#include <string>
#include <conio.h>
#include <fstream>
using namespace std;

void open_file(fstream &file)
{
    string name;
    cout << "Enter filename : ";
    cin >> name;
    file.open(name, ios::app);
    file.seekg(0);
}

void print(fstream &file)
{
    string temp;
    while(!file.eof())
    {
        getline(file, temp);
        cout << temp;
    }
}

int main()
{
    fstream file;
    open_file(file);
    print(file);
    return 0;
}

1 个答案:

答案 0 :(得分:0)

您以追加模式打开文件,这是一种写入模式而非读取模式。所以你打开文件只是为了写,而不是为了阅读。

另外,请勿使用while (!file.eof()),否则它将无法正常运行。取而代之的是while (getline(...))