Я пытаюсь заменить символы из следующей карты: const map<char, vector<char>> ass
, обратите внимание, у меня есть эта строка pas
, и я хочу заменить все векторные символы (значение карты) на соответствующий ключ карты, я попытался выполнить итерациюсопоставить с циклом for следующим образом: (я получил этот код из другого вопроса по stackoverflow)
for (auto const &ent1 : ass) {
//ent1.first = first key
//ent1.second = second key
}
Поэтому я попытался перебрать вектор значений карты следующим образом:
string char1;
string char2;
string wr;
for (auto const &ent1 : ass) {
for (int i = 0; i < ent1.second.size(); i++) {
specialValues += ent1.second[i];
char2 = ent1.second[i];
char1 = ent1.first;
regex e("([" + char1 + "])");
cout << ("([" + char1 + "])");
cout << char2;
wr = regex_replace("c1a0", e, char2);
}
}
Я хочу, чтобы строка «c1a0» стала «ciao» после циклов, но она просто ничего не меняет,
Я также попробовал:
wr = regex_replace("c1a0", e, "o");
вывод: c1a0
regex e("([0])");
wr = regex_replace("c1a0", e, char2);
вывод: c1a2
Не знаю, для меня это не имеет смысла.Я не понимаю, можете ли вы помочь мне понять, что не так в моем коде?
Конечно, если я напишу:
regex e("([0])");
wr = regex_replace("c1a0", e, "o");
Это дает мне "c1ao", это то, что я хочу.