C++11 char16_t strstr and sprintf equivalent

C++11 char16_t strstr and sprintf equivalent

本文关键字:and sprintf equivalent strstr char16 C++11      更新时间:2023-10-16

对于char16_t类型是否有任何等效的strstr和sprintf函数?

另外,我在哪里可以找到char16_t的剩余函数?

我认为没有这样的函数。

如果sizeof(char16_t) == sizeof(wchar_t),你可以使用像wsprintf那样的宽字符串函数

警告:Linux上的sizeof(wchar_t) == sizeof(int32_t) !

你总是可以使用(在c++ 11中)std::u16string

也许你可以考虑使用Qt5 QChar(几乎像UTF16中的char16_t)和QString。您只需要链接QtCore即可。那么QString::arg与sprintf可以提供的功能类似(但不等价)。

正如我所评论的,浮点到字符串的转换很棘手。也许MUSL libc(自由软件,MIT许可)中的一些代码可以启发您,您可以借用其中的一些。

对于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;