0

私はfile.txtを持っています。そのファイル内の単語を読み取ることができる関数をC++で作成し、各単語とそれらがfile2.txtに出現する回数を出力します

パーサーとライター、およびマップクラスを使用できることがわかっている調査を行っていますが、何か助けてください。

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

3 に答える 3

3

これは在宅ワークですか?std::map、、および をオンラインで検索しstd:stringます。std::ifstreamstd::ofstream

于 2011-04-11T16:37:55.353 に答える
1

ifstreamを使用してファイルを読み取り、文字列s のマップに格納し、特定の. 次に、ofstreamを使用してファイルに書き込みます。intmapstring

于 2011-04-11T16:40:55.163 に答える
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 はこれを適切に行うことができますか?
    1 つのことを覚えるには、何回プログラミングする必要がありますか?

  • "text_output.txt" の内容:
    単語 1 回見つけた単語
    4 回見つけた単語
    3 回見つけ
    た単語 2 回見つけ
    た単語 それは? 単語が 1回
    見つかりました 多くの単語が 1 回
    見つかりました 単語が 1 回見つかりました 単語が 1 回見つかりました 単語が 1

    見つかりました
    見つけた 1 回
    単語を覚えている 見つけた 1 回
    の単語を見つけた 1 回
    この単語を見つけた
    1 回
    単語を見つけた 回見つけた

c++ を効率的に使用する素晴らしい方法を学ぶための優れたリソースは、Accelerated c++ という本です。

よろしく、

于 2011-04-13T01:18:02.600 に答える