3

我正在尝试打开一个文件,以便从中读取。

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;

ifstream input_file("blah.txt", ios::in);
ofstream output_file("output.txt", ios::out);

Bank::Bank(void){
    input_file.open("blah.txt");
    if(!input_file){
        cerr << "Error" << endl;
        exit(1);
    }
    else{
        cout << "good 2 go" << endl;
    }
}

这是我用于读取名为 blah.txt 的文件的代码,我在终端得到的输出是“错误”。我正在使用 Linux Mint 14 和 gVim,所以当我输入 :pwd 命令时,我知道我在目录 /mnt/share 中。从终端检查,文件 blah.txt 位于同一目录中。我唯一能想到的是隐藏文件扩展名。为什么我打不开文件?

4

2 回答 2

5

那是因为您打开“blah.txt”两次。

第一次:

ifstream input_file("blah.txt", ios::in)

第二次:

input_file.open("blah.txt")

删除第二个应该可以解决您的问题。

于 2013-02-17T10:40:33.730 回答
1

ifstream input_file("blah.txt", ios::in);

应该打开文件

此外,当使用第二个构造函数版本时,流与物理文件相关联,就好像调用了具有相同参数的成员函数 open。

input_file.open("blah.txt");

应该失败

如果对象已经有一个关联的文件(打开),则函数失败。

请阅读文档。

于 2013-02-17T10:31:11.473 回答