以下几行都“按预期工作”:
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
,但是将繁重的工作委托给vswprintf
.