string Farfallino::decode(string buff) {
string stringa;
size_t pos;
while(1) {
while(pos = (buff.find("afa"))) {
buff.erase(pos, 3);
buff.insert(pos, "a");
}
while(pos = (buff.find("efe"))) {
buff.erase(pos, 3);
buff.insert(pos, "e");
}
while(pos = (buff.find("ifi"))) {
buff.erase(pos, 3);
buff.insert(pos, "i");
}
while(pos = (buff.find("ofo"))) {
buff.erase(pos, 3);
buff.insert(pos, "o");
}
while(pos = (buff.find("ufu"))) {
buff.erase(pos, 3);
buff.insert(pos, "u");
}
}
return stringa;
}
Я пытаюсь стереть все «afa», «efe», «ifi», «ofo» и «ufu», которые находятся в строке, переданной функции, но это выдает мне эту ошибку.
Я понятия не имею, что я делаю не так ..
Это должно быть что-то вроде этого:
while ((pos = buff.find("x")) != std::string::npos)
{
// ...
}
«Не найдено» сигнализируется возвращением npos
не ноль. Ноль будет просто первым персонажем.
Других решений пока нет …