2016-06-16 3 views
2

C++でデフォルトのディレクトリパスをfstreamに設定することはできますか?私が言う場合 、C++のfstreamのデフォルトのディレクトリパスを設定

fstream fPointer("file1.txt",ios::in); 

、それが自動的にディレクトリを見つけなければならない

/home/[user]/[path]/file1.txt、からファイルを見つけなければならない(/ホーム/ [ユーザー]/[パス] /) 私はfstreamまたはofstreamを使用するたびに。

+4

これが役立つことがあります。http://stackoverflow.com/questions/3485166/change-current-working-directory-c – Ajay

+2

これは、現在の作業ディレクトリが何のためにあるのかです。 –

+2

このようなパスをハードコードしないでください。ユーザーのホームディレクトリが '/ home/[user]'でない場合はどうなりますか?彼らは1つ持っていない場合はどうなりますか?彼らはそれを使用したくない場合はどうしますか? –

答えて

1

fstreamは '現在の'作業ディレクトリ(つまりプログラムが実行されたディレクトリ)でファイルを開きます。これを変更するには、cd(windows)またはcwd(Linux?)を使用して、プログラムを実行する前に現在の作業ディレクトリを設定します。

また、コンストラクタ内のファイルの絶対パスを指定するだけです。

+0

Linuxの場合、 'chdir()'です。 – Slava

+0

@Slava chdir()は、プログラムの現在の方向/後/実行を変更するためのC関数です。私はプログラムを実行する前にディレクトリを変更するためのシェルコマンドについて話していました。 – Neil

+0

シェルコマンドはシェルに依存し、sh/ksh/bash/cshでは 'cd'ではなく' cwd'です。しかし、これはプログラミング問題ですので、OPにプログラムの現在のディレクトリを変更する方法を伝えることは理にかなっています。 – Slava

1
std::string myDefaultDirectory = "/home/[user]/[path]/"; 

... 

fstream fPointer(
    myDefaultDirectory + "file1.txt", 
    ios::in); 
+0

C++ 98では '(myDefaultDirectory +" file1.txt ")が必要です。c_str()' – Midas

関連する問題