Если в системе установлен соответствующий шрифт, Qt смо­жет воспроизвести текст на любом из этих языков. А при установке соответствую­щих программ ввода текста пользователи смогут вводить в своих приложениях Qt текст на этих языках.

Программирование с использованием QChar немного отличается от программи­рования с применением char. Для получения числового кода символа QChar вызовите для него функцию unicode(). Для получения кода ASCII переменной типа QChar (в ви­де char) вызовите функцию toLatin1(). Для символов, отсутствующих в кодировке Latin-1, функция toLatinl () возвращает '\0\

Если нам заранее известно, что все строковые данные в программе представлены в кодировке ASCII или Latin-1, мы можем использовать такие стандартные функции (определенные в файле <cctype>), как isalphaQ, isdigit() и isspace(), для обра­ботки возвращаемого функцией toLatinl () значения. Однако в общем случае лучше использовать функции-члены класса QChar для выполнения этих операций, по­скольку они будут правильно работать для любых символов Unicode. К таким функ­циям класса QChar относятся isPrint(), isPunct(), isSpace(), isMark(), isLetter(), is-Number(), isLetterOrNumber(), isDigitO, isSymbol(), isLower() и isUpper(). Например, ниже показано, как осуществлять проверку символа на цифру или прописную букву:

if (ch.isDigit() || ch.isUpperO)

Этот фрагмент кода правильно работает для любых алфавитов, в которых разли­чаются символы верхнего и нижнего регистров, в том числе для латинского, грече­ского и кириллицы.

Строку в кодировке Unicode мы можем использовать в любом месте програм­много интерфейса Qt, где допускается применение строки типа QString. Qt сам отве­чает за правильное ее отображение и преобразование в соответствущие кодировки при взаимодействии с операционной системой.

Особенно внимательными надо быть при чтении и записи текстовых файлов. Текстовые файлы могут использовать различные кодировки, и часто оказывается не­возможным определить кодировку текстового файла по его содержанию. По умолча­нию QTextStream использует локальную системную 8-битовую кодировку (которая доступна при помощи функции QTextCodec:: codecForLocale()), как для чтения, так и для записи. Для стран Америки и Западной Европы это обычно подразумевает коди­ровку Latin-1.

Если мы разработали свой


<< назад вперед >>