0

" " に基づいてファイルを解析し、単語をリンク リストに配置するパーサー クラスを作成しようとしています。

class FileReader
{
public:
   FileReader(char* file)   
   {

    ifstream fout (file, ifstream::in);

    string hold;

    while (fout.good())
    {
        getline (fout, hold, " ");
        cout << hold;

    }

    fout.close();

    }

};

関数getline(fout, hold, " ")は " " を区切り文字として認識していません。

リンク リストの部分はまだコーディングしていないので、これはプログラムの解析部分にすぎません。

また、パーサーを作成するためのより良い方法はありますか?

4

2 に答える 2

3

次のように動作するはずです:

#include <fstream>
#include <iterator>
#include <list>
#include <string>

std::ifstream infile(file);

std::list<std::string> words(std::istream_iterator<std::string>(infile),
                             std::istream_iterator<std::string>());

これwordsが、空白で区切られたトークンのリンク リストです。

教訓: 最高の種類のコードは、書く必要のないものです。

于 2013-10-03T21:19:23.360 に答える
2

の最後のパラメータgetlineは aではありcharませんstring。現在のコードを見て、あなたが望むgetline(fout,hold,' ')か、単にgetline(fout,hold)--*行全体が必要な場合。

* : 編集

于 2013-10-03T21:20:56.307 に答える