对于char16_t类型,是否有与strstr和sprintf等效的函数?另外,在哪里可以找到char16_t的其余函数?
q3aa05251#
我不认为有这样的功能。如果是sizeof(char16_t) == sizeof(wchar_t),则可以使用wsprintf这样的宽字符串函数警告:Linux上的sizeof(wchar_t) == sizeof(int32_t)!你可以一直使用(在C++11中)std::u16string也许你可以考虑使用Qt 5 QChar(几乎像UTF 16中的char16_t)和QString,你只需要链接QtCore就可以了,那么QString::arg就和sprintf所能提供的类似(但不等价)。正如我所评论的,浮点数到字符串的转换是很棘手的,也许MUSL libc(自由软件,MIT许可证)的一些代码可以给你灵感,你可以借用其中的一些。
sizeof(char16_t) == sizeof(wchar_t)
wsprintf
sizeof(wchar_t) == sizeof(int32_t)
char16_t
QtCore
sprintf
ee7vknir2#
对于strstr,你可以使用std::u16string_view::find,或者如果你只对布尔结果感兴趣,你甚至可以使用C++23 std::u16string_view::contains。
std::u16string_view::find
std::u16string_view::contains
const bool contains_world = std::u16string_view(u"Hello, World!").find(u"World") != std::u16string_view::npos;
2条答案
按热度按时间q3aa05251#
我不认为有这样的功能。
如果是
sizeof(char16_t) == sizeof(wchar_t)
,则可以使用wsprintf
这样的宽字符串函数警告:Linux上的
sizeof(wchar_t) == sizeof(int32_t)
!你可以一直使用(在C++11中)std::u16string
也许你可以考虑使用Qt 5 QChar(几乎像UTF 16中的
char16_t
)和QString,你只需要链接QtCore
就可以了,那么QString::arg就和sprintf
所能提供的类似(但不等价)。正如我所评论的,浮点数到字符串的转换是很棘手的,也许MUSL libc(自由软件,MIT许可证)的一些代码可以给你灵感,你可以借用其中的一些。
ee7vknir2#
对于strstr,你可以使用
std::u16string_view::find
,或者如果你只对布尔结果感兴趣,你甚至可以使用C++23std::u16string_view::contains
。