2013-04-01 51 views
-2

嗨我工作的應用程序,我想創建一個函數,讀取文件 前。如何創建讀取多個文件的函數?

readFiles() 
{ 
    f1, f2=NULL, f3=NULL; 
} 

但我很難獲取多個文件加載。我想創建一個函數來讀入文件並將它們設置爲一個指定的變量,以用於我的程序中的其他函數。任何幫助或想法都會很棒。再次感謝! PS。這不是一項家庭作業。

+5

你知道如何閱讀** one **文件嗎? –

+0

是的,我確實知道如何閱讀一個文件。 – Cka91405

+1

那麼重複使用代碼來讀取多個文件有什麼問題?什麼是閱讀多個文件的「困難時期」?你有什麼嘗試? –

回答

2

我個人寫一個函數開始,可以讀取ONE文件。該函數從另一個知道需要讀取文件的函數中起作用。

例如,假設該文件不enormouse(千兆字節大),你可以做一個函數讀取文件合併成一個字符串:

std::string readfile(std::string name) 
{ 
    ifstream f(name.c_str()); 
    std::stream tmp; 
    std::stream res; 
    while(getline(f, tmp) 
    { 
     res += tmp; 
    } 
    return res; 
} 


void somefunc() 
{ 
    std::string file1 = readfile("file1.txt"); 
    std::string file2 = readfile("file2.txt"); 
} 

當然,如果文件的列表整數,您可能想要將數據讀取到整數向量中。如果內容更復雜,則讀入矢量或結構體或類也是可行的。但基本原則適用[當然,假定幾個文件具有相同的一般類型的內容]。

+0

感謝您的幫助,這使得完整的意義,我會研究這種閱讀文件的方式。再次感謝! – Cka91405

1

你看過ifstream嗎?看看這裏:http://www.cplusplus.com/reference/fstream/ifstream/ifstream/

你是否將流傳遞給函數或實際文件名?您需要爲多個文件創建多個流,除非您想一次處理一個文件。你將不得不這樣做:

ifstream nameOfStream ("Name of File"); 

創建流。你甚至不需要在功能上做到這一點。如果你把所有的文件名,你可以這樣做:

ifstream stream1(file1); 
ifstream stream2(file2); 
ifstream stream3(file3); 

編輯:如果你想用一個流來做到這一點:

ifstream stream1(file1); 
//Do something with stream 
stream1.close(); 
stream1.open(file2); 
+0

太棒了!謝謝你的幫助 – Cka91405

+0

我怎麼可以讓用戶被要求輸入文件名,然後打開下一個文件? – Cka91405

+0

看看'cin'。您可能也想使用這個講述C++基礎的tututorial。 http://cplusplus.com/doc/tutorial/。他們有一個關於基本輸入和輸出的部分。 – OGH