C++11 char16_t strstr и sprintf эквивалент
Есть ли эквивалентные функции для strstr и sprintf для типа char16_t?
Кроме того, где я могу найти оставшиеся функции char16_t?
2 ответа
Я не думаю, что есть такие функции.
Если sizeof(char16_t) == sizeof(wchar_t)
Вы можете использовать широкие строковые функции, такие как wsprintf
Предостережение: sizeof(wchar_t) == sizeof(int32_t)
в Linux!
И вы всегда можете использовать (в C++11) std::u16string
Возможно, вы могли бы рассмотреть возможность использования Qt5 QChar (почти как char16_t
в UTF16) и QString. Вам нужно всего лишь ссылку QtCore
для этого. Тогда QString::arg похож (но не эквивалентен) тому, что sprintf
может предложить.
Как я уже говорил, преобразование с плавающей точкой в строку сложно. Возможно, какой-то код из MUSL libc (свободное программное обеспечение, лицензия MIT) мог бы вдохновить вас, и вы могли бы позаимствовать его.
Для strstr вы можете использоватьstd::u16string_view::find
или даже С++23std::u16string_view::contains
если вас интересует только логический результат.
const bool contains_world =
std::u16string_view(u"Hello, World!").find(u"World") != std::u16string_view::npos;