Слишком много знаков в символьной константе
Пишу программу для декодирования текста на С++, ниже приведен пример. char не может обработать больше четырех знаков, что можно сделать, или как можно изменить тип данных для корректной обработки кода?
string letterToDigits(const string& s)
{
static unordered_map<char, string>m{ {'0000001',"а"},{'00000001',"б"} };
string str{};
for_each(s.cbegin(), s.cend(), [&str](const char& c)noexcept {
auto f = m.find(c);
str += (f != m.end()) ? f->second : "";
});
return str;
}
Ответы (1 шт):
Автор решения: Шкраб
→ Ссылка
Литерал вида '...' имеет тип char, а вы пытаетесь поместить в него строку 0000001, что есть массив char. Для строковых литералов используется "...", поэтому замена '0000001' на "0000001" + изменение типа с char на std::string должны помочь.