2011-06-18 48 views
3

我只是想打開這個文件,並使用getline函數從文件中讀取,但我似乎無法弄清楚爲什麼它不工作。我經歷了很多次,fileOpen變量正在被加載正確的文件,我試圖打開,所以我不確定它爲什麼不會打開,使用getline。我只希望能夠通過getline讀取文件,所有這些都是通過遞歸函數完成的,最終讀取目錄中的所有文件。讓我知道你是否需要更多關於我在做什麼的信息。需要幫助getin ifstream ::打開打開一個文件,並從它得到它

string line; 
ifstream file; 
string fileOpen; 
bf::directory_iterator dirIter (fullPath); //fullPath is type bf::path, passed into the function 
fileOpen = (dirIter->path().filename()); 

file.open(fileOpen); 
getline(file, line); 

回答

-1

path::filename函數返回基文件名。如果您有路徑「foo \ bar.txt」,則path::filename將返回「bar.txt」。因此,除非「foo \」在當前目錄中,否則該文件可能不存在。

什麼你就更有可能尋找這就是:

file.open(dirIter->path().native()); 

或者,你還可以使用升壓::文件系統的iostream類型:

#include <boost/filesystem/fstream> 

bf::ifstream file; 
bf::directory_iterator dirIter (fullPath); //fullPath is type bf::path, passed into the function 
file.open(dirIter->path()); 
+0

我已經試過你但是如果我說了什麼沿着file.open(fullPath.native())的方向使用某些東西;它會嘗試打開「c:\ users \ beef \ desktop \ TestDir」,這是我想要打開的txt文件的位置,但它不會嘗試打開文件本身只是到達位置 – Beef

+0

@Beef:對不起。我用文件路徑混淆了目錄路徑。另外,你不應該假定directory_iterator是有效的;畢竟「fullPath」可能不存在或者它可能是一個空目錄。或者它可能指向一個文件而不是目錄。同樣,使用bf :: exists來查看路徑是否存在。 –