2

因此,我正在尝试使用 C++ 和 Windows 窗体来创建一个可以帮助我学习日语的应用程序(目前,仅使用平假名和可能的片假名)。目的是能够创建一个程序,让用户选择他们想要使用的字符集(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] = "あ";

最后,使用以下代码将平假名插入到文本框中:

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

基本上,考虑到所有这些,我的问题是 - 如何让我的表单在文本框中正确显示日文字符?

4

1 回答 1

0

好的!我已经对 wchar_t 进行了一些调整和试验,并且找到了解决方案。

首先,我将 hiraList 数组简化为二维数组,并将平假名字符移动到它们自己的数组中,定义如下:

wchar_t hiraChar[5][11];

并添加如下值:

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

然后,我查看“查看”按钮的代码并进行了一些更改:

删除了 displayText 变量的声明和填充方法

更新了分配 textBox5 其文本值以从 hiraChar[x][y] 读取的代码行

下面粘贴了一行新代码:

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

本质上,该程序现在为平假名创建了三个变量 - 一个用于监控复选框,一个用于存储罗马字值,一个用于存储平假名字符。当至少选中一个复选框并按下查看按钮时,将向文本框输出五项内容 - 字符、它在数组中的位置(x 和 y 是单独的框)、它的罗马字等价物和一个“真”值早期在开发中用于调试目的。

于 2014-09-18T15:41:31.383 回答