2012-07-02 54 views
2

我的.exe和addrr.txt文件位於d:\驅動C++ fstream的總是失敗的.txt文件

當我嘗試準備.TXT文件ifstream的無助

這是我的代碼:

ifstream file; 
     file.open("addrr.txt", fstream::in | fstream::out); 
     if (file.is_open()) 
     { 
      while (file.good()) 
      { 
       cout << "Addrr.txt IsGood" <<endl; 
       getline(file, Path); 
      } 

      file.close(); 
     } 

對於這種愚蠢的問題感到抱歉。 IM小白

+0

你在D:\?下運行程序嗎?如果沒有,請將文件名稱「addrr.txt」更改爲「D:\ addrr.txt」 – loki11

+0

它們位於相同位置(D:\ test.exe,D:\ addrr.txt) – user525717

+0

你運行你的程序? – jxh

回答

2

UPDATE

要確保該文件addrr.txt可你需要

  • 指定文件的絕對路徑的應用程序的運行過程中發現的,即D:\addrr.txt,或
  • 指定從當前工作目錄(CWD)的相對路徑,這是顯式地C:\Program Files\Mozilla FireFox。 (如果該文件位於另一個分區上,則這是不切實際的)。

CWD通常是運行應用程序的目錄。如果你在D:上運行你的應用程序,它應該可以工作。 (您的應用程序可能會在運行時更改CWD(例如,通過使用chdir()SetCurrentDirectory())。但是,通常更適合指定文件的絕對路徑或將文件放置在正確的CWD相對位置。 )


這編譯和我運行良好:

#include <fstream> 
#include <iostream> 
#include <string> 
using namespace std; 

int main() { 
    ifstream file; 
    file.open("addrr.txt", fstream::in | fstream::out); 
    if (file.is_open()) 
    { 
    while (file.good()) 
    { 
     string Path; 
     cout << "Addrr.txt IsGood" <<endl; 
     getline(file, Path); 
     cout << Path << endl; 
    } 
    file.close(); 
    } 
} 

// output similar to: 
/* 
Addrr.txt IsGood 
addrr.txt 
Addrr.txt IsGood 
addrr.txt 
Addrr.txt IsGood 
addrr.txt 
Addrr.txt IsGood 

Addrr.txt IsGood 

*/ 


// file: addrr.txt 
/* 
addrr.txt 
addrr.txt 
addrr.txt 

*/ 

是您正確的文件名(即敏感的情況下講)?您是否從可執行文件所在的路徑運行應用程序(s.t.文件位於當前工作目錄中)?

+0

從瀏覽器打開我的.exe文件,路徑爲C:\ Program Files \ Mozilla FireFox。 – user525717

+1

+1,但「當前工作目錄通常是從中調用應用程序的目錄」比較不精確。它由調用進程定義,即瀏覽器,資源管理器,cmd.exe等。在Windows資源管理器中的常見情況下,它是應用程序所在的目錄,對於cmd.exe,它是提示中的目錄,當通過鏈接執行時,它被指定爲鏈接的屬性。在其他情況下,例如FireFox,你必須知道該程序的功能。 –