2011-01-25 7 views
2

フルパス(full-path/roots.txt)を書き込むとファイルが開きます。 ファイル名(roots.txt)のみを書き込むとファイルが開けませんOpenメソッドでフルパスのみを開くC++

さらに、roots.txtはmain.cppと同じフォルダにあります。 Xcodeでチェックする必要のある設定はありますか?

は、ここでは、コードです:あなたはXCodeの内からファイルを実行していると仮定すると、

string line; 
ifstream infile; 
infile.clear(); 
// infile.open("roots.txt"); 
infile.open("/Users/programming/C++/roots/roots.txt"); 
if (infile.fail()) cout << "could not open the file: " << strerror(errno); 
getline(infile, line); 
cout << line; 
+3

作業ディレクトリを参照してください。 http://stackoverflow.com/questions/3396378/change-the-working-directory-in-xcode – birryree

答えて

4

ファイルが絶対パスで開こうとしたときにファイル名だけで失敗すると、相対パスが正しくない可能性があります。 roots.txtが現在の作業ディレクトリに配置されていることを確認します。 unistd.hで宣言された関数getcwdを見てください。

+0

ありがとう!相対パスはbuild/debug /にあります。私はXcodeの設定を変更する方法が不思議です。 – JohnG

2

、作業ディレクトリは、あなたの.cppファイルと同じディレクトリになることはほとんどありません。あなたの現在の作業ディレクトリがあなたの考えであるものであるか確認してください。 (getcwdコールを使用して取得する必要があります)

+0

@James:Huh ???? –

+0

あなたの答えは鉱山に似ていて、私が入力していたときに私の前に現れました。私は忍者でした。 – James

+0

@James:Oh lol。前にその表現を聞いたことはありません。 –

4

XCodeから実行しているときに作業ディレクトリを変更するには、「プロジェクト」メニューの「アクティブ実行可能ファイルを編集」を選択します。

作業ディレクトリの設定は、[全般]セクションの下部で調整できます。

+0

チップをありがとう。 Edit Active Executable "main"をProjectディレクトリ(ここではroots.txt)に変更しました。残念ながら私はまだ "Not such file or directory"というエラーがあります。 getcwdはまだ "/ Users/programming/C++/roots/build/Debug"を返します – JohnG

+0

Xcode内から実行ファイルを起動していますか? – molbdnilo

+0

XCodeから起動しない場合、その設定は効果がなく、通常の作業ディレクトリ規則が適用されます。ターミナルでは、 'cd/Users/programming/C++/roots'、次に 'build/debug/main'(実行ファイルの名前が「main」の場合)を実行する必要があります。 – molbdnilo

9

デフォルトでは、Xcodeの作業ディレクトリは~/Library/Developer/Xcode/DerivedData/project-/Build/Products/Debug.のようなものです。したがって、プロジェクトディレクトリやその他のディレクトリに相対パスを使用する場合は、Xcodeで作業ディレクトリを手動で設定する必要があります。 プロダクト - >スキーム - >スキームの編集 - >オプションタブで、カスタム作業ディレクトリを使用するチェックボックスにチェックを入れ、パスを表示します。

関連する問題