Я пытаюсь создать класс синтаксического анализатора, который будет анализировать файл на основе «» и помещать слова в связанный список.
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, " ")
не признает «» в качестве разделителя.
Я еще не закодировал связанную часть списка, так что это только часть программы.
Также будет ли лучший способ создать парсер?
Это должно просто работать так:
#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
это ваш связанный список разделенных пробелами токенов.
Урок: лучший вид кода — это тот, который вам не нужно писать.
Последний параметр в getline
это char
не string
, Глядя на ваш текущий код, вы хотите getline(fout,hold,' ')
или просто getline(fout,hold)
— * если вы хотите всю строку.
*: редактировать