2012-04-10 9 views
0

私は実行ファイルと同じフォルダにないコンピュータ上のどこかに置くことができるいくつかのリソースファイルを持つプログラムを持っています。これらのファイルを開くにはどうすればよいですか?C++で作業ディレクトリの外にファイルを開く

私は、ファイルが作業ディレクトリにないということが原因で動作していないという回答がたくさんあることがわかりました。私は完全なパスを提供しようとしました:

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

しかし、これは成功しませんでした。パスが正しいことを知っています(コピー&ペースト)。私はそれに関する文書を見つけることができませんが、それは可能でなければならないと思います。 (例えば、vim ~/foo.txt~以外の場所からのものです)。

+3

'ifstream'ではなく' iostream'をしてもよろしいですか? – Maxpm

+0

うん、タイプミス。一定。 – Ethan

答えて

2

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

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

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

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

else 
{ 
    // ... 
} 

ファイルからデータを引き出すことができない場合、問題はコード内の別の場所にあります。

+0

優秀、ありがとう。以前は何がうまくいかなかったのだろうか。 – Ethan

+0

@Maxpm 'open()'関数はパスを使って別のディレクトリのファイルを開くことができますか? xample '/ etc/passwd /'のために? – Edeph