Файл содержит нелатинское содержимое и кодируется в UTF8.
В настоящее время существующий код используетfopen
«, чтобы открыть файл, анализирует его и вызывает мой validate
функция с нелатинским содержанием и передает данные как char*
,
void validate(const char* str)
{
....
}
Я должен сделать некоторую проверку пройденного char
массив.
Приложение использует Sun C++ 5.11
и который я думаю, что не поддерживает unicode
, (Я гуглил поддержку Unicode в Sun C ++ 5.11, я не получил должных указателей о поддержке Unicode. Поэтому я написал простую программу для проверки, поддерживает ли Sun C ++ Unicode, и что программа не компилировалась).
Как мне сделать проверку на входе char*
? Возможно ли использовать wchar_t
?
Приложение использует
<compiler>
и который я думаю, что не поддерживает Unicode
Это не проблема. Вам нужна только поддержка компилятора для Unicode для встраивания строковых литералов Unicode в код или для символов с фиксированной шириной для представления UTF-16 или UTF-32. Ваш Unicode — UTF-8 и поступает от пользователя, поэтому поддержка компилятора Unicode не требуется.
Как мне сделать проверку на входе
char*
?
Стандартная библиотека C ++ имеет очень мало инструментов для обработки юникода. Предоставленные инструменты в основном состоят из преобразования между различными форматами Юникода, и даже эти инструменты не были доступны до C ++ 11.
Ввод и вывод — это в основном копирование байтов, поэтому для этого не требуется никакой значительной обработки. Для другой обработки (которая вам, вероятно, понадобится для «проверки») вам потребуется самостоятельно внедрить эти инструменты или использовать сторонние инструменты. Вам нужно будет обратиться к ~ 1000 страниц стандарта Unicode, если вы решите реализовать себя: http://www.unicode.org/versions/Unicode9.0.0/UnicodeStandard-9.0.pdf
Возможно ли использовать
wchar_t
?
wchar_t
является собственным типом широких символов, используемым для кодирования собственных широких символов системы. UTF-8 не использует широкие кодовые единицы.
Других решений пока нет …