Считаете ли вы, что хранить кодировку переменной длины в std::string или std::wstring нормально и делаете ли вы это?

Считаете ли вы, что хранить кодировку переменной длины в std::string или std::wstring нормально и делаете ли вы это?
Считаете ли вы, что хранить кодировку переменной длины в std::string или std::wstring нормально и делаете ли вы это? - syrenofisys @ Unsplash

Моя конвенция такова:

  • std::string = UTF-8. Для общего использования.
  • Utf16String = UTF-16. Используется в основном для системных вызовов Windows.
    • std::wstring в Windows
    • std::basic_string<uint16_t> в Linux
  • Utf32String = UTF-32.
    • std::basic_string<uint32_t> в Windows
    • std::wstring в Linux.
  • std::vector<unsigned char> = нестроковые двоичные данные

Вы просто должны привыкнуть думать о строках как о массиве кодовых точек, а не как о массиве символов. При таком представлении все строковые методы работают правильно, кроме find_first_of/find_last_of/find_first_not_of/find_last_not_of/std::string.


LetsCodeIt, 24 мая 2023 г., 01:13