问题标签 [widechar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++,WCHAR[] 到 std::cout 和比较
我需要将 WCHAR[] 放入 std::cout ...它是从 Native Wifi API 回调传递的 PWLAN_CONNECTION_NOTIFICATION_DATA 的一部分。
我尝试了简单的 std::cout << var; 但它会打印出第一个字符的数字地址。比较 ( var == L"some text"
) 也不起作用。调试器返回预期值,但比较返回 0。如何将此数组转换为标准字符串(std::string)?
提前致谢
c - C/C++ I18N mbstowcs 问题
我正在致力于国际化 C/C++ 应用程序的输入。我目前遇到了从多字节字符串转换为宽字符串的问题。
代码需要跨平台兼容,所以我尽量使用mbstowcs和wcstombs。
我目前正在使用 WIN32 机器,并且已将语言环境设置为非英语语言环境(日语)。
当我尝试转换多字节字符串时,我似乎遇到了一些转换问题。
以下是代码示例:
执行结束时,宽字符串不包含转换后的数据。我认为代码页设置存在问题,因为当我使用 MultiByteToWideChar 并发送当前代码页时
例如:MultiByteToWideChar(CP_ACP, 0, mbsVal, -1, wcsVal, size + 1); 代替 mbstowcs 调用,转换成功。
我的问题是,如何使用通用 mbstowcs 调用而不是 MuliByteToWideChar 调用?
c++ - 如何测试字符串是否具有特定的 unicode char?
假设您有一个接收参数的命令行可执行文件。此执行程序已准备好宽字符,您想测试其中一个参数是否以 HYPHEN 案例开头,其中它是一个选项:
命令 -o foo
如果您不知道主机使用的字符集,您如何在代码中对其进行测试?给定的控制台应该不可能由widechar 森林中的另一个字符生成相同的连字符表示吗?(在这种情况下,它将是一个野生字符:P)
c++ - C++:宽字符输出不正确?
我的代码基本上是这样的:
我希望使用宽字符串,但我不知道它们是如何输出的,所以我使用了 wprintf。当我运行诸如:
十六进制代码点创建了这个:
为什么他们都按顺序跳?我的意思是如果 wprintf 是错误的,我仍然不明白为什么它会以如此特定的混乱顺序输出!
编辑:字节序还是什么?他们似乎每两个字符旋转一次。嗯。
编辑 2:我尝试使用 wcout,但它输出完全相同的十六进制代码点。奇怪的!
c++ - 如何将 wchar_t 转换为 int 以显示代码点?
我的程序中有一个简单的函数,当我想弄乱 unicode 并用它做一些事情时。在这个函数中,我希望显示用户输入的字符的代码值。似乎有可能,这是我的功能:
现在如您所见,我只想显示整数值(如 ascii 字符,例如(int) "a"
),但类似的listcode(L"&")
内容将显示为&: &
!
不可能找到像这样的宽字符的整数值吗?
c++ - 使用带有 clang 的宽字符常量获取“宽字符常量中的无关字符被忽略”错误
我最近决定从 gcc 切换到 clang,并且由于我使用宽字符常量而收到以下警告:“被忽略的宽字符常量中的无关字符”。以下是收到警告的代码:
在这里,case 条件中的字符都是高 unicode 字符,因此显然被 clang 解析器视为多字节字符(源代码是 UTF-8 编码的)。
我的问题是警告信息背后的含义是什么。也就是说,究竟是什么被忽略了。另外,鉴于此警告,我的程序会按设计工作吗?
gcc 没有对此代码发出任何警告,并且一切都像魅力一样工作。
c - qsort 的第四个参数的“不兼容的指针类型”编译器警告
我正在尝试使用标准库qsort
对宽字符数组进行排序:
现在我认为所涉及的函数有这些原型:
结果完全符合预期,但为什么我会收到编译器警告“ passing argument 4 of ‘qsort’ from incompatible pointer type
”?我怎样才能铸造wcscoll
以适应原型?
如果我定义并传入一个单独的比较函数,警告就会消失:
...但是当参数不是 type 时,这个看起来应该有错误处理wchar_t *
。
java - 为什么 Java char 原语会占用 2 个字节的内存?
为什么 Java char 原始数据类型是 2 个字节,而 C 是 1 个字节,有什么理由吗?
谢谢
c++ - UNICODE 字符数据的 _T( ) 宏更改
我有 UNICODE 应用程序,其中我们使用 _T(x) 定义如下。
我知道 L 被定义为 wchar_t,在任何平台上都是 4 个字节。如果我错了,请纠正我。我的要求是我需要 L 为 2 个字节。因此,作为编译器破解,我开始使用 -fshort-wchar gcc 标志。但是现在我需要将我的应用程序移到 zSeries 上,在该平台上我看不到 -fshort-wchar 标志的效果。
为了让我能够在 zSeries 上移植我的应用程序,我需要修改 _T( ) 宏,即使在使用 L ##x 并且不使用 -fshort-wchar 标志之后,我也需要获得 2 字节宽的字符数据。有人可以告诉我如何更改 L 的定义,以便在我的应用程序中始终将 L 定义为 2 个字节。