парсинг — Создание анализатора файлов в переполнении стека

Я пытаюсь создать класс синтаксического анализатора, который будет анализировать файл на основе «» и помещать слова в связанный список.

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

Решение

Это должно просто работать так:

#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 это ваш связанный список разделенных пробелами токенов.

Урок: лучший вид кода — это тот, который вам не нужно писать.

3

Другие решения

Последний параметр в getline это char не string, Глядя на ваш текущий код, вы хотите getline(fout,hold,' ') или просто getline(fout,hold) — * если вы хотите всю строку.

*: редактировать

2

По вопросам рекламы [email protected]