gpt4 book ai didi

c++ - 在 C++ 中定义 Unicode 时映射格式说明符?

转载 作者:可可西里 更新时间:2023-11-01 10:18:30 24 4
gpt4 key购买 nike

Mapping format specifier %s to %ls when _tprintf() is mapped to wprintf()?

我正在使用 _T() 宏将字符串映射到 ASCII 或 Unicode,具体取决于是否定义了 _UNICODE

但是,像 _tprintf("%s", _T("text string")) 这样的调用给我带来了麻烦,因为在定义 _UNICODE 时类型不一致.

我看到 %ls 应该用于 Unicode 字符串。

当定义了_UNICODE时,如何将%s直接映射到%ls?有没有像 _T()?

这样的奇特函数

最佳答案

However, a call like _tprintf("%s", _T("text string")) is causing me trouble, because of inconsistent types when _UNICODE is defined.

您还应该对 _tprintf() 的第一个字符串文字(即格式说明符字符串)使用 _T() 装饰器:

// NOTE: _T("%s"), not just "%s"
//
_tprintf(_T("%s"), _T("text string"));

这在 ANSI 构建中被扩展为:

printf("%s", "text string"); // %s maps to char* ANSI string

在 Unicode 中构建为:

wprintf(L"%s", L"text string"); // %s maps to wchar_t* Unicode string

关于c++ - 在 C++ 中定义 Unicode 时映射格式说明符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35156495/

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