1. ホーム
  2. c++

[解決済み] ifstream がファイルを開いていない

2022-02-01 04:33:34

質問

この関数では、行列配列に割り当てたい文字のセットを含むファイルを開こうとしていますが、このプログラムを実行すると、コンソールに「ファイルが開かれていません」というエラーが表示されます。もう一つの質問ですが、ファイルをリソース・フォルダーに追加した場合、ハードディスクのルートにあるファイルではなく、そのファイルにアクセスするように指定するにはどうすればよいのでしょうか?

ifstream readSecondMap("C:\\map_2.txt", ifstream::in);

void Stage::populateStage(ifstream &myStage, char (&myArray)[mapXcor][mapYcor]) {
    if(myStage.is_open()){
        for(int a = 0; a < mapXcor+1; ++a){
            for(int b = 0; b < mapYcor+1; ++b){
                myArray[a][b] = (char) myStage.get();
            }
        }
        myStage.close();        
    } else {
        std::cout << "Error: Unable to open File" <<std::endl;
    }
}

解決方法は?

ちょうど@TianyunLingが指摘したように。

KUbuntu 12.10でテストしてみました。

  1. オープンエラー:もし map_2.txt が存在しない場合、エラーになります。
  2. ファイルのパスです。

    フォルダ1
    +------- ファイル1
    +------- ファイル2
    フォルダ2
    +------- プログラム
    +------- ファイル3

あなたの program を使って、file1 にアクセスします。 "../folder1/file1" を、訪問するために "file3" 使用する file3 . (を変更しなかったとします)。 program 作業ディレクトリ)

もうひとつ、このような場合、特に指定する必要はありません。 ifstream::in に対して ifstream .