Использование std::format для форматирования текстов char8_t, char16_t и char32_t в C++ 20 ⇐ C++
Использование std::format для форматирования текстов char8_t, char16_t и char32_t в C++ 20
Я работал над кодом кросс-платформенного движка, и для хранения и передачи текстовых данных unsigned short был своего рода лучшим типом, поскольку в Windows он такой же, как wchar_t, а на Mac - как unichar, на котором ретранслируется NSString ( wchar_t на Mac по какой-то причине 32-битный по размеру). С новым C++ 20 и появлением char16_t я заменил на него свой общий беззнаковый короткий тип и начал максимально оптимизировать код, и всякий раз, когда было возможно, использовать один и тот же код для обеих ОС (Mac и Win). Новый char16_t работал отлично, пока я не перешел к форматированию и не увидел, что std::format еще не поддерживает его.
Пропробовал множество решений, в итоге использовал библиотеку FMT, поддерживающую форматирование char16_t, только чтобы увидеть, что ее код очень похож на код std::format (оба сделал один и тот же человек), поэтому я задался вопросом, можно ли сделать std ::format для работы со всеми типами символов.
После некоторой работы и предоставления отсутствующего кода (шаблоны форматирования для других типов символов) я получил только известную ошибку >> C2491: 'std::numpunct::id': определение статического элемента данных dllimport не разрешено <
Я работал над кодом кросс-платформенного движка, и для хранения и передачи текстовых данных unsigned short был своего рода лучшим типом, поскольку в Windows он такой же, как wchar_t, а на Mac - как unichar, на котором ретранслируется NSString ( wchar_t на Mac по какой-то причине 32-битный по размеру). С новым C++ 20 и появлением char16_t я заменил на него свой общий беззнаковый короткий тип и начал максимально оптимизировать код, и всякий раз, когда было возможно, использовать один и тот же код для обеих ОС (Mac и Win). Новый char16_t работал отлично, пока я не перешел к форматированию и не увидел, что std::format еще не поддерживает его.
Пропробовал множество решений, в итоге использовал библиотеку FMT, поддерживающую форматирование char16_t, только чтобы увидеть, что ее код очень похож на код std::format (оба сделал один и тот же человек), поэтому я задался вопросом, можно ли сделать std ::format для работы со всеми типами символов.
После некоторой работы и предоставления отсутствующего кода (шаблоны форматирования для других типов символов) я получил только известную ошибку >> C2491: 'std::numpunct::id': определение статического элемента данных dllimport не разрешено <
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Шаблон для std::format списка объектов, доступных std::format()? [закрыто]
Anonymous » » в форуме C++ - 0 Ответы
- 36 Просмотры
-
Последнее сообщение Anonymous
-