2

ユーザーが実行可能ファイルと同じフォルダーにないコンピューター上のどこかに置くことができるいくつかのリソースファイルを持つプログラムがあります。これらのファイルを開くにはどうすればよいですか?

動作しない理由は、ファイルが作業ディレクトリにないためであるという多くの回答を見つけました。完全修飾パスを提供しようとしました:

ifstream str;
str.open("/home/millere/foo.txt")

しかし、それは失敗しました。パスが正しいことはわかっています (コピーして貼り付けます)。それに関するドキュメントは見つかりませんが、可能である必要があると思います。(たとえば、作品vim ~/foo.txt以外の場所から)。~

4

2 に答える 2

6

ifstreamの代わりに使用するつもりだったと仮定するとiostream、コードは正しいです。 ifstreamファイルへのパスだけでなく、作業ディレクトリ内のファイルの名前も使用できます。

ファイルが存在しない場合、例外はスローされませんが、失敗ビットが設定されます。ストリームで何かをしようとする前に、これを確認する必要があります。

std::ifstream input("/home/bob/stuff.txt");

if (!input) std::cerr << "Could not open the file!" << std::endl;

else
{
    // ...
}

それでもファイルからデータを抽出できない場合、問題はコードの別の場所にあります。

于 2012-04-10T18:22:15.607 に答える