multi-character constant при использовании кириллицы в map

Я хочу сделать словарь, чтобы использовать его в цикле и менять введенный текст посимвольно, сравнивая его со словарём, но у меня выдает ошибку multi-character constant

P.S. если заменить ключи на английские буквы, то всё работает нормально, но мне нужен русский; замена кавычек с ординарных на двойные так же не делает никакой погоды; смена char на string тоже не помогла.

#include <iostream>
#include <iterator>
#include <map>

using namespace std;

int main() {
    
    setlocale(LC_ALL, "Russian");

    map <char, string> fontDictionary = 
    {
        {'а', "А"}, 
        {'б', "6"},
        {'в', "B"},
        {'г', "G"},
        {'д', "D"},
        {'е', "E"},
        {'ё', "E"},
        {'ж', "}I{"},
        {'з', "3"},
        {'и', "U"},
        {'й', "u"},
        {'к', "K"},
        {'л', "JI"},
        {'м', "M"},
        {'н', "H"},
        {'о', "O"},
        {'п', "II"},
        {'р', "P",},
        {'с', "C"},
        {'т', "T"},
        {'у', "y"},
        {'ф', "o|o"},
        {'х', "X"},
        {'ц', "Ul"},
        {'ч', "4"},
        {'ш', "W"},
        {'щ', "W"},
        {'ъ', "b"},
        {'ы', "bI"},
        {'ь', "b"},
        {'э', "e"},
        {'ю', "IO"},
        {'я', "9"}, 
    };

    string toBeChanged;
    cin >> toBeChanged;

    return 0;
}

Код ошибки в терминале:

grxxndxxm@grxxndxxm:~/Desktop$ g++ CS16Font.cpp -o CS16
CS16Font.cpp:13:10: warning: multi-character character constant [-Wmultichar]
   13 |         {'а', "А"},
      |          ^~~~
CS16Font.cpp:14:10: warning: multi-character character constant [-Wmultichar]
   14 |         {'б', "6"},
      |          ^~~~
CS16Font.cpp:15:10: warning: multi-character character constant [-Wmultichar]
   15 |         {'в', "B"},
      |          ^~~~
CS16Font.cpp:16:10: warning: multi-character character constant [-Wmultichar]
   16 |         {'г', "G"},
      |          ^~~~
CS16Font.cpp:17:10: warning: multi-character character constant [-Wmultichar]
   17 |         {'д', "D"},
      |          ^~~~
CS16Font.cpp:18:10: warning: multi-character character constant [-Wmultichar]
   18 |         {'е', "E"},
      |          ^~~~
CS16Font.cpp:19:10: warning: multi-character character constant [-Wmultichar]
   19 |         {'ё', "E"},
      |          ^~~~
CS16Font.cpp:20:10: warning: multi-character character constant [-Wmultichar]
   20 |         {'ж', "}I{"},
      |          ^~~~
CS16Font.cpp:21:10: warning: multi-character character constant [-Wmultichar]
   21 |         {'з', "3"},
      |          ^~~~
CS16Font.cpp:22:10: warning: multi-character character constant [-Wmultichar]
   22 |         {'и', "U"},
      |          ^~~~
CS16Font.cpp:23:10: warning: multi-character character constant [-Wmultichar]
   23 |         {'й', "u"},
      |          ^~~~
CS16Font.cpp:24:10: warning: multi-character character constant [-Wmultichar]
   24 |         {'к', "K"},
      |          ^~~~
CS16Font.cpp:25:10: warning: multi-character character constant [-Wmultichar]
   25 |         {'л', "JI"},
      |          ^~~~
CS16Font.cpp:26:10: warning: multi-character character constant [-Wmultichar]
   26 |         {'м', "M"},
      |          ^~~~
CS16Font.cpp:27:10: warning: multi-character character constant [-Wmultichar]
   27 |         {'н', "H"},
      |          ^~~~
CS16Font.cpp:28:10: warning: multi-character character constant [-Wmultichar]
   28 |         {'о', "O"},
      |          ^~~~
CS16Font.cpp:29:10: warning: multi-character character constant [-Wmultichar]
   29 |         {'п', "II"},
      |          ^~~~
CS16Font.cpp:30:10: warning: multi-character character constant [-Wmultichar]
   30 |         {'р', "P",},
      |          ^~~~
CS16Font.cpp:31:10: warning: multi-character character constant [-Wmultichar]
   31 |         {'с', "C"},
      |          ^~~~
CS16Font.cpp:32:10: warning: multi-character character constant [-Wmultichar]
   32 |         {'т', "T"},
      |          ^~~~
CS16Font.cpp:33:10: warning: multi-character character constant [-Wmultichar]
   33 |         {'у', "y"},
      |          ^~~~
CS16Font.cpp:34:10: warning: multi-character character constant [-Wmultichar]
   34 |         {'ф', "o|o"},
      |          ^~~~
CS16Font.cpp:35:10: warning: multi-character character constant [-Wmultichar]
   35 |         {'х', "X"},
      |          ^~~~
CS16Font.cpp:36:10: warning: multi-character character constant [-Wmultichar]
   36 |         {'ц', "Ul"},
      |          ^~~~
CS16Font.cpp:37:10: warning: multi-character character constant [-Wmultichar]
   37 |         {'ч', "4"},
      |          ^~~~
CS16Font.cpp:38:10: warning: multi-character character constant [-Wmultichar]
   38 |         {'ш', "W"},
      |          ^~~~
CS16Font.cpp:39:10: warning: multi-character character constant [-Wmultichar]
   39 |         {'щ', "W"},
      |          ^~~~
CS16Font.cpp:40:10: warning: multi-character character constant [-Wmultichar]
   40 |         {'ъ', "b"},
      |          ^~~~
CS16Font.cpp:41:10: warning: multi-character character constant [-Wmultichar]
   41 |         {'ы', "bI"},
      |          ^~~~
CS16Font.cpp:42:10: warning: multi-character character constant [-Wmultichar]
   42 |         {'ь', "b"},
      |          ^~~~
CS16Font.cpp:43:10: warning: multi-character character constant [-Wmultichar]
   43 |         {'э', "e"},
      |          ^~~~
CS16Font.cpp:44:10: warning: multi-character character constant [-Wmultichar]
   44 |         {'ю', "IO"},
      |          ^~~~
CS16Font.cpp:45:10: warning: multi-character character constant [-Wmultichar]
   45 |         {'я', "9"},
      |          ^~~~

Ответы (2 шт):

Автор решения: uint16_t

Дело в том, что буквы кириллицы, как и любые другие, не являющиеся латиницей, по факту - юникод. Но из-за того, что sizeof(char) == 1, юникод просто не способен хранится в этом типе (исходя из комментариев, можно сказать, что байт имеет право быть как равным по размеру 8 битам, так и нет. Однако такое встречается настолько редко и даже если встретится, то будет иметь специфичную реализацию стандартной библиотеки и компилятора, что этим можно пренебречь). Так что я всё же советую объявить unordered_map<string, string>, а русские буквы писать в двойных кавычках (") для использования юникода. (Также, как писали в ответах выше, есть способ использовать L'..' символы, но нужно будет поменять map<char, string> на map<wchar_t, string>, вдобавок я не уверен, должно ли это работать.)

→ Ссылка
Автор решения: Damir Hakimof

Используйте wchar_t и wstring:

#include <iostream>
#include <map>

int main() {
  
  setlocale(LC_ALL, "Russian");

  std::map <wchar_t, std::wstring> fontDictionary = 
  {
    {L'а', L"А"}, 
    {L'б', L"6"},
    {L'в', L"B"},
    {L'г', L"G"},
    {L'д', L"D"},
    {L'е', L"E"},
    {L'ё', L"E"},
    {L'ж', L"}I{"},
    {L'з', L"3"},
    {L'и', L"U"},
    {L'й', L"u"},
    {L'к', L"K"},
    {L'л', L"JI"},
    {L'м', L"M"},
    {L'н', L"H"},
    {L'о', L"O"},
    {L'п', L"II"},
    {L'р', L"P",},
    {L'с', L"C"},
    {L'т', L"T"},
    {L'у', L"y"},
    {L'ф', L"o|o"},
    {L'х', L"X"},
    {L'ц', L"Ul"},
    {L'ч', L"4"},
    {L'ш', L"W"},
    {L'щ', L"W"},
    {L'ъ', L"b"},
    {L'ы', L"bI"},
    {L'ь', L"b"},
    {L'э', L"e"},
    {L'ю', L"IO"},
    {L'я', L"9"}, 
  };

  for (int g = 0; auto [i, j]: fontDictionary) {
    std::wcout << ++g << L". " << i << L' ' << j << '\n';
  }
  return 0;
}
→ Ссылка