У меня есть написанный код, который читает текст из файла и считает слова и сколько раз они повторяются, а также ссылки cout'ing URL. Но я не знаю, как заставить код читать литовские буквы. Я не нашел в интернете внятного ответа на этот вопрос. Какие-либо предложения? Спасибо.
1 ответ
Важный вопрос заключается в том, какая используется кодировка символов. Ты должен знать что. Сегодня, в 2020 году, рекомендуется использовать UTF8 везде или хотя бы что-то связанное с Unicode.
Но некоторые компьютеры или операционные системы используют другие кодировки символов. Вам необходимо выяснить (возможно, связавшись с человеком, который предоставил вам этот файл), какая кодировка используется, или прочитав документацию, относящуюся к вашей системе.
Если вы уверены, что используется кодировка UTF-8, вы найдете библиотеки для работы с ней. Включая libunistring (см. Также Qt, Glib или POCO и другие, возможно, на github или gitlab).
Имейте в виду, что некоторые нелатинские буквы занимают несколько байтов в кодировке UTF-8. Например, русская буква Ж (U + 0416 КИРИЛИЧЕСКАЯ ЗАГЛАВНАЯ БУКВА ZHE) кодируется в UTF-8 двумя байтами: 0xD0
0x96
, а очень распространенная французская буква é (U + 00E9 СТРОЧНАЯ ЛАТИНСКАЯ БУКВА E С ОСТРЫМ) кодируется в UTF-8 с помощью 0xC3
0xA9
Следовательно, Jūratė требуется 8 байтов. в UTF-8. Так что sizeof("Jūratė")
, скорее всего, даст 9 (большинство компиляторов C ++ принимают литеральные строки UTF-8 на x86-64).
См. Также https://home.unicode.org/.
Не забудьте прочитать хорошую книгу по программированию на C ++, а также посмотреть эту веб-сайт справки по C ++ и Как отлаживать небольшие программы . Прочтите документацию вашего компилятора C ++, например GCC или Clang и не путайте его со своей IDE (например, < a href = "https://en.wikipedia.org/wiki/Microsoft_Visual_Studio" rel = "nofollow noreferrer"> Visual Studio или Код Visual Studio). Прочтите также документацию к вашему отладчику (например, GDB).
Похожие вопросы
Новые вопросы
c++
C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который должен быть) скомпилирован с помощью компилятора C ++. Используйте тег для конкретной версии для вопросов, связанных с конкретной версией стандарта [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] или [C ++ 23] и т. Д. .