Слишком много знаков в символьной константе

Рейтинг: -2Ответов: 1Опубликовано: 19.04.2023

Пишу программу для декодирования текста на С++, ниже приведен пример. 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 должны помочь.