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;
Другие вопросы по тегам