Работа с символами и строками

Прежде чем начинать рассматривать создание оконных приложений, необходимо изучить работу с символами и строками. Ведь файлы с программой у нас сохраняются в кодировке UTF-8, а русские символы в этой кодировке кодируются двумя байтами. По этой причине использовать функции, предназначенные для работы с C-строками, нельзя. Выполнять операции с символами и строками в кодировке Unicode позволяют классы QChar и QString. Давайте их рассмотрим подробно.

Псевдонимы для элементарных типов

Помимо стандартных типов данных из языка C++ в Qt-программе можно использовать дополнительные типы (минимальный размер типа гарантируется для поддерживаемых библиотекой Qt платформ):

  • qint8 — псевдоним для типа signed char:
typedef signed char qint8;
  • quint8 и uchar — псевдонимы для типа unsigned char:
typedef unsigned char quint8;
typedef unsigned char uchar;
  • qint16 — псевдоним для типа short:
typedef short qint16;
  • quint16 и ushort — псевдонимы для типа unsigned short:
typedef unsigned short quint16;
typedef unsigned short ushort;
  • qint32 — псевдоним для типа int:
typedef int qint32;
  • quint32 и uint — псевдонимы для типа unsigned int:
typedef unsigned int quint32;
typedef unsigned int uint;
  • ulong — псевдоним для типа unsigned long:
typedef unsigned long ulong;
  • qint64 и qlonglong — псевдонимы для типа long long:
typedef long long qint64;
typedef qint64 qlonglong;

При указании значения после числа необходимо указать буквы LL или использовать макрос Q_INT64_C():

qint64 x = 9223372036854775807LL;
qint64 y = Q_INT64_C(9223372036854775807);
  • quint64 и qulonglong — псевдонимы для типа unsigned long long:
typedef unsigned long long quint64;
typedef quint64 qulonglong;

При указании значения после числа необходимо указать буквы ULL или использовать макрос Q_UINT64_C():

quint64 x = 18446744073709551615ULL;
quint64 y = Q_UINT64_C(18446744073709551615);
  • qreal — вещественное число. Соответствует типу double (в большинстве случаев) или float (при указании дополнительно флага):
#if defined(QT_COORD_TYPE)
typedef QT_COORD_TYPE qreal;
#else
typedef double qreal;
#endif

Дополнительные типы:

typedef QIntegerForSizeof<void *>::Unsigned quintptr;
typedef QIntegerForSizeof<void *>::Signed qptrdiff;
typedef qptrdiff qintptr;
using qsizetype = QIntegerForSizeof<std::size_t>::Signed;

Учебник C++ (Qt Creator и MinGW)
Учебник C++ (Qt Creator и MinGW) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов