2012-01-23 236 views
3

我正在C++中逐行讀取文本文件。我使用此代碼:逐行讀取txt

while (inFile) 
{ 
getline(inFile,oneLine); 
} 

這是一個文本文件:

------- 

This file is a test to see 
how we can reverse the words 
on one line. 

Let's see how it works. 

Here's a long one with a quote from The Autumn of the Patriarch. Let's see if I can say it all in one breath and if your program can read it all at once: 
Another line at the end just to test. 
------- 

問題是我只能讀取段落開頭「這是一個漫長的等......」,並停止「立刻:」 我解決不了所有的文字。你有什麼建議嗎?

+0

您知道每次讀取一行時,您將覆蓋'oneLine'的內容,因此while循環後面的'oneLine'中唯一的內容已經終止。 – PeterT

+0

你真的沒有包含太多的代碼...... – DilithiumMatrix

回答

6

正確的路線閱讀成語是:

std::ifstream infile("thefile.txt"); 

for (std::string line; std::getline(infile, line);) 
{ 
    // process "line" 
} 

還是誰不喜歡for循環的替代人:

{ 
    std::string line; 
    while (std::getline(infile, line)) 
    { 
     // process "line" 
    } 
} 

注意這是甚至有望如果文件couldn」不要打開,但如果您想爲該條件生成專用診斷,則可能需要在頂部添加額外的檢查if (infile)

+0

我真的希望這是在這個星球上的每本C++書籍(對於初學者)的第一頁。 –

+1

@AndréCaron:這是我的「經常粘貼的答案」文件中的第一個條目,如果這是任何安慰。 –

+0

Hahahahah「經常貼上答案」!我會記得那個! –