colours
- это std::map<string, string>
, где первый элемент каждой пары представляет собой двухбуквенный std::string
код цвета, а второй элемент представляет собой 7-символьный std::string
код перехода оболочки для этого цвета.
size_t i;
for(map<string, string>::iterator iter = colours.begin(); iter != colours.end(); iter++) {
while((i = text.find(iter->first)) != string::npos) {
text.replace(i, i + sizeof(iter->first), iter->second);
}
}
Когда этот код запущен, программа segfaults. Мое лучшее предположение заключается в том, что это связано с тем, что длина замещающей строки больше, чем длина заменяемой строки, но, насколько мне известно, это может вызывать сегрегирование только с char *
, а не std::string
.