1

我正在用 C++ 编写一个文本编写器,我将有一个短语字符串并为每个 char 值显示适当的位图字体。

目前,它适用于常规字符,但我得到了重音和其他字符(如 À、Á、Â、Ã 等)的奇怪值

我正在这样做:

int charToPrint = 'a';
//use this value to figure which bitmap font to display

位图字体确实有这些字符,但在这一行我没有得到我应该得到的值,例如:Ã 195 , Ç 199等等......

我尝试将项目的字符集从多字节更改为 Unicode,但我认为这对 char->int 转换没有任何作用......

如何使用字符进行此转换?

编辑:我使用的是 Visual Studio 2012、Windows 7,它是一个带有位图字体的 OpenGL 应用程序。我已经根据每个字符的char值映射了每个字符的位置/宽度/高度,因此字符a位于我的位图字体的位置 97(加上宽度)。

要绘制,我只需要根据字符代码计算位置。

我有一个要显示的短语字符串,我遍历每个字符,计算 charCode,然后调用我的绘图函数。

对于这些带有重音符号的字符,我得到的是负值,所以我的绘图函数没有做任何事情(例如,Ç 没有位置 -30)。我需要弄清楚如何正确获取这些值并发送到绘图函数。

4

1 回答 1

3

使用 Unicode,已经是 2013 年了 :)每个软件开发人员绝对、肯定必须了解 Unicode 和字符集的绝对最小值

您将使用wchar_t作为类型和UTF-16 / UTF-32编码。这将使您的代码不仅支持“不规则”字符,还支持更多“不规则”字符:)(没有常规字符之类的东西)。

例子

wchar_t c = L'Á';
printf("char: %lc encoding: %d\n", c, c);

c = 0xc1; 
printf("char: %lc encoding: %d\n", c, c);

输出

char: Á encoding: 193
char: Á encoding: 193
于 2013-09-16T03:52:39.333 回答