2011-04-11 51 views
0

我有一個file.txt我想在C++中創建一個可以讀取該文件中的單詞的函數,並打印每個單詞以及它們出現的次數一個file2.txt我想創建一個使用C++中的輸入文件的詞典

我正在做一些研究,我知道我可以使用解析器和作家,也是地圖類,請任何幫助嗎?

bool Parser::hasMoreTokens() { 
    if(source.peek()!=NULL){ 
    return true; 
} 
else{ 
    return false; 
} 
} 
+2

步驟1:*你*先提供一些代碼 – ildjarn 2011-04-11 16:35:28

回答

3

這是工作嗎?在線查看std::map,std:string,std::ifstreamstd::ofstream

1

閱讀使用ifstream,存儲文件到stringmap S,使用int作爲map保值增值,每次你遇到一個特定string。接下來,使用ofstream將它們寫入文件。

+0

我需要幫助實現解析器功能 – Technupe 2011-04-11 16:51:07

+0

那麼你的解析器funcion嗎? – Donotalo 2011-04-11 16:59:15

+0

它是一個解析器類,我不得不暗示,我想讓解析類能夠處理輸入操作 – Technupe 2011-04-11 17:01:56

0

如果你想成爲高效和線的可能數量更少做到這一點,但是通過使用標準庫,試試這個:

#include <fstream> 
#include <iostream> 
#include <iterator> 
#include <set> 
#include <string> 

int main() 
{ 
    std::ifstream f("text.txt"); 
    std::istream_iterator<std::string> eof; 
    std::multiset<std::string> words(std::istream_iterator<std::string>(f) , eof); 

    std::ofstream f_out("text_output.txt"); 
    for(std::multiset<std::string>::iterator i = words.begin(); i!=words.end(); i = words.upper_bound(*i)) 
      f_out << "the word " << *i << " found " << words.count(*i) << " times\n"; 

} 

此代碼抓取命名爲「的text.txt」的文件,並輸出結果以 「text_output.txt」

  • 「的text.txt」 的內容:
    可以可以可以III做到這正常嗎?
    我需要多少次編程才能記住它?

  • 的「text_output.txt」內容:
    如何發現1次
    我發現了4倍
    字可以發現3次
    字就發現了2倍
    字字字呢?發現1次
    字很多發現1次
    字需要發現1次
    一個發現1次
    字Word程序中發現1次
    正確的字?發現1次
    單詞記得發現1次
    單詞事物中發現1次
    這個發現1次
    字次發現1次
    對發現的單詞的2倍

字學習有效使用C++的奇妙方式的好資源是一本名爲Accelerated C++的書。

問候,

相關問題