2016-12-01 7 views
6

タイトルは少し長めですが、基本的には入力と出力をテキストファイルに読み書きするアプリを書いています。時間がたつにつれて、私はXcodeのdata-> project-> build-> products-> debugフォルダと同じディレクトリに直接ファイルを読み書きします。これはすべてが書かれていて、そこから読んでいたところだった。私はアプリケーションのために設定されたカスタムパスを持っていないので、アプリケーションがどこにあっても保存するだけです。はじめて、AppleのInstrumentsアプリケーションを実行し、プロファイラの使い方を学びました。このアプリケーションをInstrumentsのターゲットとして選択して間もなく、Xcodeアプリに戻ってもう少しプログラムを実行しました。すべてがXcodeで正常に動作します。ファイルから読み込んでフォルダと同じ場所にあるファイルに印刷しますが、ファイルをクリックして実際のプログラム自体を実行して端末を開くと、アプリケーションが存在するディレクトリには読み込まれたり印刷されなくなりますその代わりに、私のホームフォルダから印刷して読み込みます。私は何が変わったのか何が変わるのかはわかりませんが、私はそれを簡単に修正したいと思っています。私は、アプリケーションがファイルから読み込んで、そのディレクトリにあるファイルを再度印刷することを望みます。私はそのXcode設定またはターミナル設定がわからない。Xcodeアプリケーションはフォルダからの入力を読み込みませんアプリケーションは保存されています

ご協力いただければ幸いです。

アップデート1:運でこれを試してみました:

how to change the working directory to the location of the program

ディレクトリフィールドは空白だったので、私はこれが解決策だろうと思ったが、提案とそれを埋めることは、問題を軽減するために何もしませんでした。

アップデート2:

ただ、環境設定ファイルを削除まだ解決策を試していません。私は誰かに名誉を与えたいです。私は新しいメンバーだから私は一生懸命にはいないが、誰かがそれを解決する人に公正であると思うものを与えるだろう。私は必死で、本当にこの問題を解決するために2日待たずにいたい。

アップデート3:「プロファイル(リリース)でデフォルトのパス変更しようとしました

- 更新1で運を示唆していないデフォルトの変数にスキームセクションで>オプション領域を、私は私を失い始めています心

更新4:

私は多分スキームでしくじった何かがあった期待して、完全にスキームを削除し、新しいものを作ってみたが、これは問題を解決していない入力と出力。 Xcodeでアプリケーションを実行している間は、まだ作業ディレクトリを使用していますが、デバッグフォルダ内の実行ファイルを実行するには、ho私のフォルダ。

更新5:

ただ、古いiMacとXcodeのセットアップ(OS 10.8.5とXcode 5.1.1)でこれをテストし、それは読んでの現在の作業ディレクトリへの書き込み、正常に動作しているようですアプリケーションをデバッグフォルダに保存します。

+0

誰でもこの経験がありますか?実行計画がホームディレクトリに設定されているにもかかわらず、それはまだ私のホームユーザーフォルダからの格納と読み込みです。非常にイライラ。私は何か提案をしようとします。私はXcodeの設定ファイルが私のコンピュータで壊れているのだろうかと思っています。 –

+0

あなたはどのバージョンのXcodeを使用していますか? –

+0

絶対最新のリリース、8.1?私は現時点で私のコンピュータから離れているため、私は確信していません。私は仕事の後に今夜服従することができます。 –

答えて

1

何らかの理由で、https://stackoverflow.com/a/15537436/1035008で提案された解決策が機能しなくなりました。 Xcode 8.1で壊れている可能性があります。しかし、これは動作するようです:

#include <iostream> 
#include <fstream> 
#include <unistd.h> 

using namespace std; 

int main (int argc, const char * argv[]) 
{ 
    // argv[0] returns the full path to the program, in my case "/Users/yuchen/Library/Developer/Xcode/DerivedData/../Debug/test 
    string directory(argv[0]); 
    // And we want to get rid of the program name `test` 
    directory = directory.substr(0, directory.find_last_of("/")); 
    // Point the directory to the program directory 
    chdir(directory.c_str()); 

    cout << "Current directory is: " << getcwd(NULL, 0) << endl; // /Users/yuchen/Library/Developer/Xcode/DerivedData/../Debug/ 

    ifstream fin("hi.txt"); 
    if (fin.is_open()) cout << "File is Open" << endl; 
    else cout << "File is not open" << endl; 
    fin.close(); 

    return 0; 
} 

またSOSOを参照してください。お役に立てれば。

+0

それもあなたのために壊れていますか? –

+0

仕事の後、今夜このソリューションを試してみましょう。 –

+1

@ joe_04_04さて、理由を理解できませんでした。たぶんアップルはそれを目的にしたのかもしれない。彼らは、人々がプログラムディレクトリから入力ファイルを読むことを望んでいません。 –

関連する問題