gpt4 book ai didi

C++ 字符串/字符和重音符号

转载 作者:行者123 更新时间:2023-11-30 02:52:30 25 4
gpt4 key购买 nike

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

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

我这样做:

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)。我需要弄清楚如何正确获取这些值并将其发送到绘图函数。

最佳答案

使用 Unicode,已经是 2013 年了:) The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets

您将使用 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

关于C++ 字符串/字符和重音符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18819861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com