Я уже много часов читал о Unicode, его кодировках и многих связанных с ними темах.
Причина моего исследования заключается в том, что я пытаюсь прочитать содержимое файла и проанализировать их по характеру.C++ Правильно читайте файлы, чьи символы в Юникоде могут быть больше байта
Поправьте меня, если я ошибаюсь, пожалуйста:
C++ 's getc()
возвращает int
, который может равняться EOF
.
Если возвращаемое значение не равно EOF
, оно может быть
интерпретировано как
, надежно присвоенное char
.
С std::string
основан на char
мы можем построить std::string
с этими символами и использовать их.
У меня есть фон C#, где мы используем C# char
(16 бит) для string
s.
Значение этих char
s отображается непосредственно в значениях Unicode.
A char
, значение которого равно 5
, равно знаку Юникода, расположенному по адресу U+0005
.
Я не понимаю, как читать файл на C++, содержащий символы, значения которых могут быть больше байта. Я не чувствую себя комфортно, используя getc()
, когда я могу читать только символы, значения которых ограничены байтом.
Возможно, мне не хватает важного момента, как правильно читать файлы с помощью C++.
Любые идеи очень ценятся.
Я запускаю Windows 10 x64 с помощью vC++.
Но я бы предпочел оставить этот вопрос независимым от платформы, если это возможно.
EDIT
Я хотел бы подчеркнуть, переполнение стека пост, связанный в комментариях Klitos Kyriacou (?):
How well is Unicode supported in C++11?
Это быстрое погружение, как плохо юникод поддерживается в C++.
Для получения дополнительной информации вы должны прочитать/посмотреть ресурсы, предоставленные в принятом ответе.
У вас была возможность взглянуть на 'std :: wstring' и/или' wchar_t'? –
Какую кодировку вы хотите использовать? –
@ VadaPoché Позвольте мне прочитать этот материал ... –