2014-09-17 4 views
2

Итак, я пытаюсь использовать C++ и Windows Forms для создания приложения, которое поможет мне изучить японский язык (на данный момент Hiragana и, возможно, Katakana). Цель состоит в том, чтобы иметь возможность создавать программу, в которой пользователь выбирает наборы символов, которые они хотят использовать (от A до O, KA через KO и т. Д.), И либо просматривать карты свободно, либо тестировать их по символам , Для целей отладки в настоящее время у меня есть кнопка «Представление» для вывода 5 значений в 5 разных текстовых полей: произношение романа, соответствующий символ, его положение в массиве, в котором хранятся все символы, и логическое значение.C++ - Отображение и хранение японских символов

Моя проблема заключается в том, что все символы отображаются как «?», И я получаю несколько предупреждений при компиляции. Примером этого предупреждения:

1> C: \ Users \ Cameron \ документы \ Visual Studio 2010 \ Projects \ japanesecards \ japanesecards \ Form1.h (218): предупреждение C4566: символ, представленный универсальным-символьно- имя '\ u3093' не может быть представлено на текущей кодовой странице (1252)

Это отображается 46 раз, 1 для каждого японского символа в массиве. Заявление линия массива является,

std::string hiraList[5][11][2]; 

Пример вставки пары Romanji-Хираган,

hiraCheck[0][0][0] = "A"; 
hiraCheck[0][0][1] = "あ"; 

Наконец, хираган вставляется в текстовом поле, используя следующий код:

System::String^ displayText = gcnew String(hiraList[x][y][1].c_str()); 
textBox5 -> Text = displayText; 

В принципе, учитывая все это, мой вопрос: как я могу получить свою форму для отображения японских символов в текстовом поле?

+1

Использование System :: String или std :: wstring, типы строк, которые могут легко хранить текст в кодировке Unicode, закодированный в utf-16. Префикс строковых литералов с L, например L "あ", поэтому компилятор знает, что они const wchar_t *. И [прочитайте это] (http://www.joelonsoftware.com/articles/Unicode.html). –

+1

В каком кодировании вы сохраняете свои файлы кода? –

+0

@DDrmmr Я не уверен. Где в VS я могу найти эту информацию? – EnragedTanker

ответ

0

Хорошо! Я немного поработал и экспериментировал с wchar_t, и я нашел решение.

Во-первых, я уменьшил массив hiraList для двумерного массива, и переместили символы хираганы в свой собственный, массив, определяется следующим образом:

wchar_t hiraChar[5][11]; 

И добавил значения так:

hiraChar[0][0] = L'あ'; 

Затем я пошел в код для кнопки «Просмотр» и сделал несколько изменений:

Удаляется метод для объявления и заполнения переменной DisplayText

Обновлено строку кода, который присваивает textBox5 его текстовое значение для чтения из hiraChar [х] [у]

Линия нового кода был вставлен ниже:

textBox5 -> Text = hiraChar[x][y].ToString(); 

В сущности, теперь программа создает три переменные для Hiragana - One для контроля флажков, один для хранения значений romanji и один для хранения персонажей Hiragana. Когда выбран хотя бы один флажок и нажата кнопка «Вид», в текстовые поля выводятся пять вещей: символ, его положение в массиве (x и y - отдельные блоки), его эквивалент romanji и значение «True» который ранее использовался для разработки в целях отладки.

Смежные вопросы