2014-10-07 175 views
0

我有一個問題需要從文本文件中讀取詳細信息。從文本文件中讀取數據

在我的文本文件,我有這方面的信息:

Employee Name: XXXXXX 
Address: XXXXXXXXXX 
Phone Number: XXXXXX 

Employee Name: XXXXXXXX 
Address: XXXXXXXX 
Phone Number: XXXXXX 

如何,我可以得到一切有,以正確的格式,是輸出編入控制檯?

我的代碼是:

ifstream inEmpFile; 
inEmpFile.open("emp.txt"); 
string file_contents; 

    while(inEmpFile >> file_contents) 
    { 
     cout << file_contents << ' '; 
    } 
    inEmpFile.close(); 
    inEmpFile.clear(); 

我得到的文本塊,是的內容是正確的,但一切都連接在一起,如不正確的格式。我該怎麼做?在此先感謝

+1

什麼是正確的格式? – Beta 2014-10-07 02:58:37

+0

你應該看看逐行加載文件,然後執行你要查找的格式。 – DoubleYou 2014-10-07 02:59:40

+0

上述人員名稱:XXXXX \ n地址:XXXXXX。像那樣。 – NewbieCoder 2014-10-07 02:59:44

回答

1

剛讀每一行分別使用函數getline():

while (getline(inEmpFile,file_contents)) 
{ 
    cout << file_contents << ' '<<endl; 
} 
0

使用getline從文件中獲取行到字符串。 使用cout打印字符串並按照新行字符進行操作。 在循環中爲文件中的每個字符串執行此操作。

+0

你能給我舉個例子嗎?我還是新來的C++ – NewbieCoder 2014-10-07 03:09:15

+0

@Yeen:我可以建議看看'ifstream'提供的所有函數[here](http://www.cplusplus.com/reference/fstream/ifstream/?kw=ifstream)嗎?另外,在網上尋找例子應該很多。 – DoubleYou 2014-10-07 03:11:54

0

使用>>忽略所有的空間。複製整個文件可以做到這樣:

ifstream inEmpFile; 
inEmpFile.open("emp.txt"); 

std::cout << inEmpFile.rdbuf(); // no loop needed 

這工作,因爲<<std::streambuf*一個特殊的過載是由rdbuf()返回的。

見(2)流緩衝std::ostream::operator<<()