gpt4 book ai didi

c - 将阿拉伯字符声明并打印为 wchar_t

转载 作者:行者123 更新时间:2023-11-30 16:44:46 27 4
gpt4 key购买 nike

我尝试将阿拉伯字符存储为 wchar_t,然后将其打印到控制台,但无法使其工作。

我已将控制台设置为 UTF-8,如果我只是将阿拉伯字母输入控制台,它们就会正确显示(尽管未加入)。

我根据( How to initialize a wchar_t variable? )中的答案尝试了几种不同的方法,并且可以打印出其他 unicode 字符,但不能打印出阿拉伯语......

到目前为止我已经尝试过:

下面的代码 - 给出了关于从不进行强制转换的指针生成整数的错误:

#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <locale.h>

int main ()
{
wchar_t a = L"ي";

setlocale(LC_ALL, "");
wprintf (L" here is my character - %lc",a);


return 0;
}

相同,但带有单引号 - 运行但打印空白:

wchar_t a = L'ي';

unicode 值本身 - 发出警告,字符常量对其类型而言太长:

wchar_t a = L'\xd9\x84';

当我尝试非阿拉伯字符时,它似乎有效 - 如果我输入“g”,它会很好地显示,而“xd9”会给我一个很好的带重音的 U 字符。我需要为阿拉伯语做一些额外的事情吗?

任何帮助将不胜感激!我真的希望能够输入阿拉伯语,而不必使用 unicode 数字。

我正在使用 Windows 和 MinGW(尽管无论如何我都遇到了问题,所以如果解决了问题我很乐意切换编译器)

最佳答案

对于第一个示例,您需要使用 %s 格式才有机会。我还没有尝试过阿拉伯语,所以我不知道会发生什么。明显的问题是阿拉伯语是从右到左,而控制台是从左到右设计的。但是将字符串打印为字符是行不通的。

wchar_t 不用于 UTF-8。 UTF-8 使用纯 char *(编码的要点)。 wchar_t 使用扩展的 16 位代码点。如果您查找阿拉伯语代码点并将其输入为数字,您至少应该从 wprintf() 获得阿拉伯语输出。输入阿拉伯字形对于编辑器来说是一个问题,就像 C++ 本身一样。

关于c - 将阿拉伯字符声明并打印为 wchar_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44375754/

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