Устал я ждать от комитета, когда он наконец соизволит добавить простейшую поддержку Unicode. Казалось бы, много не надо, дайте хотя бы какую-нибудь to_u8string(const std::basic_string<>& str) — преобразование из одной кодировки Юникод в другую, но нет. Старую поддержку задеприкейтим, не объясняя что случилось, а нового ничего не дадим. Вот уже и 23-й с++ на подходе, но и там что-то ничего нового про Unicode не слышно. В общем пришлось городить свой велосипед. Библиотека header-only, стандарт С++17 и выше, кроссплатформенная, совместима с MSVС, GCC и CLang. Также поддерживается итерация по всяким код-поинтам и код-юнитам, короче минимально необходимый функционал есть. Очень надеюсь что кому-то библиотека покажется полезной, а может быть кто-то давно искал что-то подобное. sutfcpplib (Simple UTF library for C++) — выложил на GitHub пот MIT лицензией.
Как я понял, это обертка, которая позволяет исправить POSIX API, что бы его без проблем, кроссплатформенно, можно было использовать c UFT-8/UTF-16. Зависимость от Boost.
sutfcpplib- легкая, header-only библиотека для преобразования из/в UFT-8/UTF-16/UTF-32. API операционной системы в ней не используется.
Т.е. ответ: это две абсолютно разные библиотеки, для абсолютно разных целей.
Здравствуйте, Videoman, Вы писали:
V>В общем пришлось городить свой велосипед. Библиотека header-only, стандарт С++17 и выше, кроссплатформенная, совместима с MSVС, GCC и CLang
Здравствуйте, Nuzhny, Вы писали:
N>simdutf — это не аналог?
Аналог. Но собственно у меня изначально и была проблема не в том, что не существует библиотек, а в том, что таких огромных библиотек море и их нужно собирать. Если нужно комплексное, самое быстрое решение, для готового проекта, то нет проблем. Я-то сам пишу библиотеки, которые должны быть header-only, где не всегда понятно какая система сборки, где активно используются шаблоны, при этом мне же потом все это и поддерживать. Мне такое не подходит. В С++ предпочитаю не использовать стиль Си: transform_XXX_to_YYY_with_ZZZ_.... — и таких 100 методов. Во-первых такой подход хреново работает с шаблонами, т.к. опирается на имена методов, а не на типы. Во-вторых плохо сочетается с С++, т.к. кроме сырых указателей существуют еще итераторы и другие контейнеры. В-третьих такое очень трудно поддерживать.