所以,我正在尝试使用C ++和Windows Forms来创建一个可以帮助我学习日语的应用程序(目前只有Hiragana和Katakana)。目的是能够创建一个程序,让用户选择他们想要使用的字符集(A到O,KA到KO等),并自由查看卡片或让程序在角色上测试它们。出于调试目的,我目前将View按钮设置为输出5个值到5个不同的文本框 - 罗马语发音,相应的字符,它在存储所有字符的数组中的位置,以及布尔值。
我的问题在于这些字符都显示为“?”,并且在编译时会收到多个警告。此警告的一个示例:
1> c:\ users \ cameron \ documents \ visual studio 2010 \ projects \ japanesecards \ japanesecards \ Form1.h(218):警告C4566:由universal-name-name'\ u3093'表示的字符无法表示当前代码页(1252)
这显示了46次,数组中的每个日文字符为1。数组的声明行是
std::string hiraList[5][11][2];
插入Romanji-Hiragana对的一个例子是,
hiraCheck[0][0][0] = "A";
hiraCheck[0][0][1] = "あ";
最后,使用以下代码将平假名插入到文本框中:
System::String^ displayText = gcnew String(hiraList[x][y][1].c_str());
textBox5 -> Text = displayText;
基本上,考虑到所有这些,我的问题是 - 如何让我的表单在文本框中正确显示日文字符?
答案 0 :(得分:0)
好!我做了一些调整并尝试使用wchar_t,我找到了解决方案。
首先,我将hiraList数组缩减为二维数组,并将平假名字符移动到它们自己的数组中,定义如下:
wchar_t hiraChar[5][11];
并添加如下值:
hiraChar[0][0] = L'あ';
然后,我转到“查看”按钮的代码并进行了一些更改:
删除了声明和填充displayText变量的方法
更新了代码行,该代码行将textBox5的文本值分配给hiraChar [x] [y]
新代码的一行已贴在下面:
textBox5 -> Text = hiraChar[x][y].ToString();
本质上,程序现在为平假名创建三个变量 - 一个用于监控复选框,一个用于存储romanji值,另一个用于存储平假名字符。如果选中至少一个复选框,并按下视图按钮,则会向文本框输出五个内容 - 字符,其在数组中的位置(x和y是单独的框),其等效的罗马字和“真”值之前在开发中用于调试目的。