我正在尝试创建一个解析器类,它将根据“”解析文件,并将这些单词放入链表中。
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, " ")
无法识别“”作为分隔符。
我还没有对链表部分进行编码,所以这只是程序的解析部分。
还有更好的方法来创建解析器吗?
答案 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)
- *。
* :编辑