用C ++创建文件解析器

时间:2013-10-03 21:17:33

标签: c++ parsing fileparsing

我正在尝试创建一个解析器类,它将根据“”解析文件,并将这些单词放入链表中。

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, " ")无法识别“”作为分隔符。

我还没有对链表部分进行编码,所以这只是程序的解析部分。

还有更好的方法来创建解析器吗?

2 个答案:

答案 0 :(得分: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是以空格分隔的标记的链接列表。

课程:最好的代码就是你不必写的代码。

答案 1 :(得分:2)

getline中的最后一个参数是char而不是string。查看当前代码,如果您想要整行,则需要getline(fout,hold,' ')getline(fout,hold) - *。

* :编辑