Использование std::format для форматирования текстов char8_t, char16_t и char32_t в C++ 20C++

Программы на C++. Форум разработчиков
Anonymous
Использование std::format для форматирования текстов char8_t, char16_t и char32_t в C++ 20

Сообщение Anonymous »


Я работал над кодом кросс-платформенного движка, и для хранения и передачи текстовых данных 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 не разрешено <

Вернуться в «C++»