2016-04-12 56 views
-2

我似乎無法讀取使用Visual Studio 2013年這裏該文件是我的代碼:無法讀取文件2013

int main() 
{ 
    string buffer1, buffer2; 
    int column = 1; 

    ifstream fin; 
    ofstream fout; 
    fin.open("Airports.csv"); 
    if (fin.fail()){ 
     cerr << "Input file fail" << "\n"; 
     exit(-1); 
    } 

} 

每次我嘗試運行該程序,我得到「輸入文件失敗」。我不確定將我的「Airports.csv」文件放置在與我的項目文件目錄相關的位置。該項目被稱爲「ArrayBag」。到目前爲止,我有「Airports.csv」置於: 「Z:\ Visual Studio 2013 \ Projects \ ArrayBag \ ArrayBag」。任何提示都非常感謝。

+0

該文件的路徑是相對於可執行文件的路徑。這可能是'Debug'或'Release'子目錄,具體取決於您選擇構建應用程序的方式。 –

+0

我如何知道我使用的是哪個版本? – Brian

+0

這是VS用戶界面中的下拉列表。取決於您對用戶界面外觀的偏好。 –

回答

1

如果您將文件包含在項目中用於測試目的,只需將其添加到Visual Studio中的項目中,並將構建操作設置爲始終複製或複製爲新。然後,你可以使用這樣的事情找到它:

int main() 
{ 
    string buffer1, buffer2; 
    int column = 1; 

    ifstream fin; 
    ofstream fout; 
    string fullPath = System.IO.Path.Combine( 
         AppDomain.CurrentDomain.BaseDirectory, 
         "Airports.csv"); 
    fin.open(fullPath); 
    if (fin.fail()) 
    { 
     cerr << "Input file fail" << "\n"; 
     exit(-1); 
    } 
} 

這樣,它並不關心你在哪裏建到。該文件將遵循你的二進制文件。

+0

感謝您的回覆,我很感激。我很難理解它,主要是因爲我對Visual Studio很陌生。在嘗試解決方案之前,我會先閱讀Visual Studio上的一些內容 - 儘管對於我來說,我的首選解決方案是將文件放在正確的文件夾中,而不是將更多代碼添加到我的.cpp文件中 – Brian

+0

對不起。我的方法是C#(doh!我應該注意到你的語法)。不過,這個想法是一樣的。您想要檢索應用程序的路徑或任何想要用作數據路徑的內容(例如%AppData%\ YourAppName),然後將文件名追加到它。您的原始代碼假定該文件與二進制文件位於相同的位置,而不是。即使部署,假設代碼將在同一地點工作也不可靠。任何人都可以通過應用程序快捷方式等來更改工作目錄。 –

+0

此外,要將文件放置在「正確」文件夾中,將文件添加到項目並部署它將確保它與構建路徑相同。您將始終需要添加代碼來確定數據路徑,而不是假設工作目錄。您可以聲明一次這樣的路徑,並在需要時重新使用它們。 –