В настоящее время std::c8rtomb
и std::mbrtoc8
являются единственными интерфейсами, предоставляемыми стандартом, которые обеспечивают преобразование между кодировкой выполнения и UTF-8. Интерфейсы неудобны. Они были разработаны, чтобы соответствовать уже существующим интерфейсам, таким как std::c16rtomb
и std::mbrtoc16
. Формулировка, добавленная к стандарту C ++ для этих новых интерфейсов, намеренно совпадает с формулировкой в стандарте C для ранее существующих связанных функций (надеюсь, что эти новые функции в конечном итоге будут добавлены в C; мне все еще нужно это продолжить). Намерение сопоставить стандартную формулировку C, как бы странно это ни было, - обеспечить, чтобы любой, кто знаком с формулировкой C, признал, что интерфейсы char8_t
работают одинаково.
cppreference.com имеет несколько примеров версий этих функций в UTF-16, которые должны быть полезны для понимания вариантов char8_t
.