Итак, я пытаюсь использовать C ++ и Windows Forms для создания приложения, которое поможет мне изучать японский язык (на данный момент только хирагана и, возможно, катакана). Цель состоит в том, чтобы иметь возможность создать программу, в которой пользователь выбирает наборы символов, которые он хочет использовать (от A до O, от KA до KO и т. Д.), И либо свободно просматривает карты, либо программа проверяет их на наличие символов. , В целях отладки у меня в настоящее время есть кнопка View, установленная для вывода 5 значений в 5 различных текстовых полях — римское произношение, соответствующий символ, его положение в массиве, в котором хранятся все символы, и логическое значение.
Моя проблема заключается в том, что все символы отображаются как «?», И я получаю несколько предупреждений при компиляции. Пример этого предупреждения:
1> c: \ users \ cameron \ documents \ visual studio 2010 \ projects \ japanesecards \ japanesecards \ Form1.h (218): предупреждение C4566: символ, представленный именем универсального символа ‘\ u3093’, не может быть представлен в текущем коде страница (1252)
Это отображается 46 раз, по 1 для каждого японского символа в массиве. Строка объявления массива:
std::string hiraList[5][11][2];
Пример вставки пары Romanji-Hiragana:
hiraCheck[0][0][0] = "A";
hiraCheck[0][0][1] = "あ";
Наконец, Hiragana вставляется в текстовое поле, используя следующий код:
System::String^ displayText = gcnew String(hiraList[x][y][1].c_str());
textBox5 -> Text = displayText;
По сути, учитывая все это, у меня вопрос: как мне заставить мою форму правильно отображать японские символы в текстовом поле?
Хорошо! Я немного поэкспериментировал и поэкспериментировал с wchar_t и нашел решение.
Сначала я сократил массив hiraList до двумерного массива и переместил символы Hiragana в собственный массив, определенный следующим образом:
wchar_t hiraChar[5][11];
И добавленные значения примерно так:
hiraChar[0][0] = L'あ';
Затем я перешел к коду кнопки «Просмотр» и внес несколько изменений:
Удалил метод объявления и заполнения переменной displayText
Обновлена строка кода, которая присваивает textBox5 свое текстовое значение для чтения из hiraChar [x] [y]
Строка нового кода была вставлена ниже:
textBox5 -> Text = hiraChar[x][y].ToString();
По сути, теперь программа создает три переменные для хираганы — одну для контроля флажков, одну для хранения значений романдзи и одну для хранения символов хираганы. Когда установлен хотя бы один флажок и нажата кнопка «Просмотр», в текстовые поля выводятся пять вещей: символ, его позиция в массиве (x и y — отдельные поля), его эквивалент романдзи и значение «True» который был использован ранее в разработке для целей отладки.