2016-12-01 23 views
6

içinde Depolanıyor Başlık biraz uzun-sarmalı, ama temel olarak, girdi ve çıktılarını metin dosyalarına okuyan ve yazan bir uygulama yazdım. Tüm zaman, dosyaları Xcode türetilmiş data-> project-> build-> products-> debug klasörüyle aynı dizinde okur ve yazar. Her şeyin yazıldığı ve okuduğu yer burasıydı. Uygulama için özel bir yolum yok, bu nedenle uygulamanın bulunduğu her yere kaydediliyor. İlk kez, bir profiler kullanmayı öğrenmek için Apple'ın Instruments uygulamasını koştum. Bu uygulamayı Enstrümanlarda hedef olarak seçtikten sonra, programı daha fazla çalıştırmak için Xcode uygulamasına geri döndüm. Her şey Xcode'ta iyi çalışıyor. Dosyadan okur ve klasörle aynı konumda bulunan dosyalara yazdırır, ancak dosyayı tıklatarak ve terminali açarak gerçek programı çalıştırmayı denediğimde, artık o dizini okumaz veya bu dizine basar Bunun yerine, kendi ev klasörümden yazdırma ve okuma. Ne değiştiğini veya neyin değişmesine neyin neden olduğunu bilmiyorum, ama onun basit bir düzeltme olmasını umuyorum. Uygulamadan dosyaların okunmasını ve dizinde yer alan dosyaların tekrar yazdırılmasını istiyorum. Bir Xcode ayarının mı yoksa bir Terminal ayarının mı olduğundan emin değilim.Xcode Uygulaması Klasörden Daha Uzun Okuma Yok Artık Uygulama

Herhangi bir yardım büyük memnuniyetle karşılanacaktır.

Güncelleme 1: hayır şans ile bu çalıştı:

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

dizin alanı boş olduğunu, bu yüzden çözüm bu olur, ama öneri ile doldurarak sorunu hafifletmek için hiçbir şey yapmadı.

Güncelleme 2:

Sadece tercih dosya silme hala hiçbir çözüm çalıştı. Birisine itibar vermeye razıyım. Çok fazla bir şeyim yok çünkü daha yeni bir üyeyim, ama kişinin adil olduğunu düşündüğü şeyi, kim çözüyorsa onu vereceğim. Çaresizim ve gerçekten bu sorunu çözmek için 2 gün beklemek istemiyorum.

Güncelleme 3:.

"Profil (sürüm) varsayılan yolu değiştirme çalıştı - güncelleme 1. Hiç şans önerildiği varsayılan değişken düzeni bölümünde> seçenekler alanı kaybedecek başlıyorum benim . Zihin

Güncelleme 4:.

belki düzeni ile çuvalladığınıdüşünecek şey vardı umuduyla, tamamen düzenini silme ve yenisini yapma denedim ama bu sorunu çözmedi Girdi ve çıktı Xcode uygulaması çalıştırırken hala çalışma dizinini çalıştırırken, çalıştırılabilir dosyayı çalıştırırken debug klasöründe ho kullanıyor bende klasör.

Güncelleme 5:

Sadece eski bir iMac ve Xcode kurulumu (OS 10.8.5 ve Xcode 5.1.1) bu test edilmiş ve o okuma ve mevcut çalışma dizinine yazma, düzgün çalışıyor gibi görünüyor hata ayıklama klasöründe uygulama.

+0

Bu konuda deneyim sahibi olan var mı? Çalışma dizini ana dizine ayarlanmış olsa bile, hala kendi kullanıcı klasörümden saklıyor ve okuyor. Çok sinir bozucu. Herhangi bir öneride bulunacağım.Xcode için ayarlar dosyasının benim bilgisayarımda bozuk olup olmadığını merak ediyorum. –

+0

Xcode'un hangi sürümünü kullanıyorsunuz? –

+0

Mutlak en yeni sürüm, 8.1? Şu an bilgisayarımdan uzak olduğumdan emin değilim. İşten sonra bu gece uygun olabilirim. –

cevap

1

Sebep ne olursa olsun, https://stackoverflow.com/a/15537436/1035008 tarafından önerilen çözüm artık çalışmıyor. Belki de Xcode 8.1'de kırılmış olabilir.

#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; 
} 

Ayrıca SO ve SO bkz: Ama bu iş gibi görünüyor. Bu yardımcı olur umarım.

+0

Senin için de kırılmış mı? –

+0

Bu işten sonra bu çözümü deneyeceğim. –

+1

@ joe_04_04 Yay, nedenini anlayamadım. Belki Apple bunu bilerek yaptı. İnsanların program dizinindeki giriş dosyalarını okumasını istemezler. –

İlgili konular