C++11 char16_t字符串和sprintf等效项

8nuwlpux  于 2023-01-03  发布在  其他
关注(0)|答案(2)|浏览(165)

对于char16_t类型,是否有与strstr和sprintf等效的函数?
另外,在哪里可以找到char16_t的其余函数?

q3aa0525

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许可证)的一些代码可以给你灵感,你可以借用其中的一些。

ee7vknir

ee7vknir2#

对于strstr,你可以使用std::u16string_view::find,或者如果你只对布尔结果感兴趣,你甚至可以使用C++23 std::u16string_view::contains

const bool contains_world =
    std::u16string_view(u"Hello, World!").find(u"World") != std::u16string_view::npos;

相关问题