2015-06-03 170 views
0

我正在使用Xcode,並且無法打開文件流以從文本文件分配變量。我推測,將txt文件放置在與項目相同的目錄中可以讓我打開流而不包括整個目錄。我一直在搞這個一小會兒,我無法正常工作。我相信我能夠一次讀取數據,但我認爲打印的字符串是unicode(不確定)。這是一個非常簡單的程序..我認爲它會起作用。 我認爲我的問題與示例所在的目錄以及Xcode如何與項目文件一起工作。我只是將示例文件放在項目文件夾中,並希望它能起作用。無法打開文件流C++

#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 
int main() 
{ 
    string name; 
    ifstream infile; 
    infile.open("example.txt"); 
    if(infile.is_open()) 
    { 
     infile >> name; 
    } 
    else 
     cout << "Unable to open file"; 

    cout << name; 
    return 0; 
} 
+2

它是否與絕對路徑一起工作? – Borgleader

+0

我還沒有試過。雖然給了它一些,但我真的不知道如何在Mac上做到這一點。我最近拿到了這臺電腦,但我並不喜歡Xcode。 – TEddyBEaR

+3

你如何運行該程序?因爲你沒有在文件中指定路徑,它會檢查你當前的工作目錄,這不能保證它是程序駐留的地方。 –

回答

3

首先,請記住,工作目錄並不總是程序的二進制文件所在的目錄。

變化:

infile.open("example.txt"); 

到:

infile.open("/full/path/to/program/directory/example.txt"); 

其中/full/path/to/program/directory/是文件夾,其中的程序(因此example.txt文件)被放置的位置。它應該解決這個問題。


順便說一句,你可能還需要閱讀this question,能夠解決非常類似的問題。

另外,閱讀約getcwd() function

+0

不知道如何在mac上輸入完整的目錄路徑(新的爲蘋果)。 「/desktop/practice/example.txt」不起作用。 – TEddyBEaR

+0

做「〜/桌面/練習/ example.txt」 – erip

+0

它的工作原理。完整路徑名稱位於程序的一側。 – TEddyBEaR