Здравствуйте. Выдает непонятную ошибку, как исправить? Скриншот: Вот исходный код:
string translator(string x, int language) {
string Return;
map <char, char> mapEng{{ 'q', 'й' },{ 'w', 'ц' },{ 'e', 'у' },{ 'r', 'к' },{ 't', 'е' },{ 'y', 'н' },{ 'u', 'г' },{ 'i', 'ш' },{ 'o', 'щ' },{ 'p', 'з' },{ 't', 'е' },{ '[', 'х' },{ ']', 'ъ' },
{ 'a', 'ф' },{ 's', 'ы' },{ 'd', 'в' },{ 'f', 'а' },{ 'g', 'п' },{ 'h', 'р' },{ 'j', 'о' },{ 'k', 'л' },{ 'l', 'д' },{ ';', 'ж' },{ '\'', 'э' },{ '\\', '\\' },
{ 'z', 'я' },{ 'x', 'ч' },{ 'c', 'с' },{ 'v', 'м' },{ 'b', 'и' },{ 'n', 'т' },{ 'm', 'ь' },{ ',', 'б' },{ '.', 'ю' },{ '/', '.' } };
switch (language) {
case 1:
for (int i = 0; i < x.length(); i++) {
char a = mapEng.find(x[i]);
Return += a;
}
case 2: break;
}
}
То, что вы пытаетесь получить, предоставляет метод at
, а не метод find
. Т.е. не
char a = mapEng.find(x[i]);
а
char a = mapEng.at(x[i]);
Надо только помнить, что в случае, когда x[i]
отсутствует в mapEng
, будет выброшено исключение. Устраивает это вас или нет - вам решать, ибо из вашего кода не ясно, что вы планируете делать в таких ситуациях.
как уже сказали в комментариях, результат mapEng.find()
нужно сохранить в итератор
правильный вариант:
string translator(string x, int language) {
string Return;
map <char, char> mapEng{...};
switch (language) {
case 1:
for (int i = 0; i < x.length(); i++) {
map <char, char>::const_iterator a = mapEng.find(x[i]);
Return += a->second;
}
case 2: break;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
У меня есть число N - наименьшее общее кратное двух чисел a и b