2011-04-15 86 views
0

我可以讀線很容易的數量,使用:閱讀次數

ifstream in(file); 
string content; 
while(getline(in, content)) 
{ 
    // do stuff 
} 

或者,我可以讀字和字符輕鬆使用類似數量:

ifstream in(file) 
string content; 
int numOfCharacters = 0; 
int numOfWords = 0; 
while(in >> content) 
{ 
    ++numOfWords; 
    numOfCharacters += content.size(); 
} 

但我不想兩次閱讀文件。我怎樣才能讀取文件一次,找出行數,文字和字符的數量? PS:如果有簡單的方法,我會歡迎Boost的消化。
謝謝。

回答

1

閱讀該行併爲每行計數單詞。見第二部分的stringstream。

(我沒有提供更多的信息,看起來太像一個家庭作業)。

+0

不做作業,只是從linux執行wc命令。你給了我足夠的信息。謝謝。 – Kobe 2011-04-15 11:44:24

+0

重新實現wc似乎是一種家庭作業,或者至少是一種你要學習的練習,而且你不希望直接給你一個完整的解決方案。 – AProgrammer 2011-04-15 11:47:20

+0

我只是爲Windows創建一個shell,沒什麼大不了的,使用Boost.Filesystem來容納這個librabry。 – Kobe 2011-04-15 11:54:02

1

使用iostreams解決方案:您可以通過getline()從每行讀取創建一個strstream,並對其執行字符/字符計數操作,累積在所有行中。

+0

是的,我總是忘記stringstream :)謝謝。 – Kobe 2011-04-15 11:45:09