次の行はどちらも「意図したとおりに機能します」:
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
ます。