является эквивалентом <thing> для char32_t
Есть ли эквиваленты для функций char (ispace, isalpha и т. Д.), Определенных в <ctype>
за char32_t
?
Я осмотрелся и смог увидеть только iswspace (и связанные), которые, похоже, предназначены для 16-битных символов.
Примечание: в то время как isspace принимает в качестве параметра int, кажется, что для символов Unicode возникают ошибочные результаты.
Пример:
char32_t dagger = U'';
if (isspace(dagger)) {
puts("That is a space!");
}
Будет выведено "Это пробел!"
2 ответа
Вплоть до wchar_t
вы можете использовать std::isalpha с подходящей локалью, определенной в<locale>
.
Для всего, что выше 0xFFFF, вам понадобится библиотека ICU:
Полный список функций: uchar.h
В то время как C++- язык имеет средства для генерации значений Unicode, C++-the-library почти полностью глух к Unicode. <ctype.h>
а также <cctype>
понятия не имею, как обрабатывать значения Unicode; их функциональность основана на механизме С локали. Ваша реализация может предоставлять локали, которые знают, что такое Юникод, но"C"
локаль по умолчанию не входит в их число.