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

in 最后一个参数getline是 achar不是 a string。查看您当前的代码,您想要getline(fout,hold,' ')或只是getline(fout,hold)- *如果您想要整行。

* : 编辑

于 2013-10-03T21:20:56.307 回答