gpt4 book ai didi

c++ - 在 C++Builder 中使用 swprintf 打印窄字符串

转载 作者:可可西里 更新时间:2023-11-01 10:05:41 27 4
gpt4 key购买 nike

以下几行都“按预期工作”:

wchar_t u[50], v[50];

swprintf(u, 50, L"%s", L"hello");
swprintf(v, 50, L"%ls", L"goodbye");

MessageBoxW(NULL, u, v, MB_OK); // output: MessageBox showing "hello" and "goodbye"

有什么方法可以打印一个窄字符串,这方面的文档在哪里?例如

swprintf(u, 50, L"%?", "hello");

C++标准规定(引用C标准)在wprintf函数族中,%s规定了char的字符串>(多字节编码,如UTF-8),%ls指定wchar_t的字符串。

因此 RTL(C++Builder 提供的运行时库实现)显然不符合标准。

背景:我实际上正在尝试使用 UnicodeString::sprintf,但是这将繁重的工作委托(delegate)给了 vswprintf

最佳答案

这不是一个真正的答案,而是更多元素的汇编。

引用:

本站http://www.cplusplus.com/很清楚:对于 wprintf 系列:...所有格式说明符都与 printf 中的含义相同;因此,%lc 应该用于写一个宽字符(而不是 %c),而 %ls 应该用于写宽字符串(而不是 %s)

实现:

gcc和clang都符合上述规范

MSVC 和根据 OP Borland C++ 不符合和接受宽字符串的 %s

关于c++ - 在 C++Builder 中使用 swprintf 打印窄字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27920229/

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