Я создаю программу, которая читает данные (и возвращает каждый токен), и, если в потоке встречается определенное значение, оно заменяется другим значением или рядом других значений.
Например:
name: [name]
id: [ID]
Должно дать:
name: Bob
id: 23 87 87 9
Вот как выглядит мой код:
token lexer::next() {
token ret;
if (IsData) {
if (DataValue.empty()) IsData = false;
else {
ret = DataValue.front();
DataValue.erase(DataValue.begin());
return ret
}
}
// some code to manage others tokens (a value is also assigned to 'ret')
if (Datas.IsData(ret.value)) {
// here, ret.value represent the '[value]' saw above
DataValue = Datas.get(ret.value);
IsData = true;
return next();
}
return ret; // for "normal" tokens
}
DataValue
это просто std::vector<token>
. И каждый раз мы возвращаем первый элемент, который затем удаляется, пока его больше нет.
Когда есть только одно значение замены, оно работает. Но помимо этого я получаю это сообщение об ошибке:
![enter image description here](https://i.stack.imgur.com/WpIB0.png)
Я не понимаю ... Единственное допущение, которое у меня есть, состоит в том, что, поскольку функция не может возвращать более одного токена за раз, она посягает на другие вызовы (потому что de value для замены может считать больше 1 токена ). Но я не уверен.
Есть идеи?