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」を 2 回開いているためです。

初めて:

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

2回目:

input_file.open("blah.txt")

2番目のものを削除すると、問題が解決するはずです。

于 2013-02-17T10:40:33.730 に答える
1

これ

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

ファイルを開く必要があります

さらに、2 番目のコンストラクター バージョンが使用されると、同じパラメーターでメンバー関数 open が呼び出されたかのように、ストリームが物理ファイルに関連付けられます。

これ

input_file.open("blah.txt");

失敗するはずです:

オブジェクトに既にファイルが関連付けられている (開いている) 場合、関数は失敗します。

ドキュメントをお読みください。

于 2013-02-17T10:31:11.473 に答える