QT_字符串类应用与常用基本数据类型 文章目录QT_字符串应用于常用基本数据类型Qt字符串类应用创建与初始化拼接格式化最常用查找与判断截取替换与删除大小写转换去除空白拆分与合并字符串与数值互转比较与 C 字符串互转重复与填充QT常见基本数据类型整数类型浮点类型字符类型字节数组万能容器日期与时间容器类几何与图形类型其他常用类型使用建议类型转换关系总览QT_字符串应用于常用基本数据类型Qt字符串类应用创建与初始化QString s1Hello;// 直接赋值QStrings2(Hello);// 构造函数QString s3QString(Hello);// 构造函数QString s4QString::fromUtf8(你好);// 从 UTF-8 创建QString s5QString::fromLocal8Bit(你好);// 从本地编码创建QString s6QStringLiteral(Hello);// 编译期创建性能最优QString s7QString::number(42);// 数值 → 字符串QString s8QString::number(3.14,f,2);// 3.14拼接s1s2;// 运算符拼接s1.append(s2);// 追加s1s2;// 追加s1.prepend(Hi );// 在前面插入s1.insert(5, Qt);// 在指定位置插入QString::asprintf(%d-%d,2026,7);// 类似 printf 格式化格式化最常用// arg() 按 %1, %2 ... 占位符替换QString msgQString(姓名: %1, 年龄: %2, 成绩: %3).arg(张三).arg(20).arg(95.5);// 结果: 姓名: 张三, 年龄: 20, 成绩: 95.5// 控制数字格式QString::number(3.14159,f,2);// 3.14保留2位小数QString::number(255,16);// ff转十六进制查找与判断s.contains(Hello);// 是否包含子串s.startsWith(He);// 是否以...开头s.endsWith(lo);// 是否以...结尾s.indexOf(llo);// 查找子串返回首次出现的位置找不到返回 -1s.lastIndexOf(l);// 查找子串返回最后一次出现的位置s.count(l);// 子串出现的次数s.isEmpty();// 是否为空 s.isNull();// 是否为 null未初始化截取s.left(5);// 取左边5个字符s.right(3);// 取右边3个字符s.mid(2,4);// 从索引2开始取4个字符s.at(0);// 取第0个字符只读s[0];// 取第0个字符可读可写s.front();// 第一个字符s.back();// 最后一个字符替换与删除s.replace(Hello,Hi);// 替换s.remove(0,3);// 从索引0开始删除3个字符s.remove(llo);// 删除所有 llo大小写转换s.toUpper();// 转大写 HELLOs.toLower();// 转小写 hello去除空白s.trimmed();// 去除首尾空白空格、换行、制表符s.simplified();// 去除首尾空白 中间连续空白合并为一个空格拆分与合并// 拆分字符串 → 列表QString csv张三,李四,王五;QStringList listcsv.split(,);// list [张三, 李四, 王五]// 合并列表 → 字符串QString joinedlist.join( | );// joined 张三 | 李四 | 王五字符串与数值互转// 字符串 → 数值QString s123;s.toInt();// 123ints.toUInt();// 123unsigned ints.toLong();// 123Ls.toFloat();// 123.0fs.toDouble();// 123.0s.toLongLong();// 123LL// 带成功标志推荐boolok;intvalQString(abc).toInt(ok);// ok false, val 0intval2QString(456).toInt(ok);// ok true, val2 456// 数值 → 字符串QString::number(42);QString::number(3.14,f,2);比较s1s2;// 是否相等s1!s2;// 是否不等s1.compare(s2);// 字典序比较0相等0 小于0 大于s1.compare(s2,Qt::CaseInsensitive);// 忽略大小写比较与 C 字符串互转// QString → C 字符串s.toUtf8().constData();// 转 UTF-8 的 const char*推荐s.toLocal8Bit().constData();// 转本地编码的 const char*s.toStdString();// 转 std::string// C 字符串 → QStringQString::fromUtf8(Hello);// 从 UTF-8QString::fromLocal8Bit(Hello);// 从本地编码QString::fromStdString(stdStr);// 从 std::string重复与填充QString sQString(abc).repeated(3);// s abcabcabcQString s2QString(%1).arg(42,5,10,QChar(0));// s2 00042宽度5不足补0QT常见基本数据类型QT基本常见数据类型定义在#includeQtGlobal中整数类型Qt 类型大小范围qint8/quint81 字节-128 ~ 127 / 0 ~ 255qint16/quint162 字节-32768 ~ 32767 / 0 ~ 65535qint32/quint324 字节-2³¹ ~ 2³¹-1 / 0 ~ 2³²-1qint64/quint648 字节-2⁶³ ~ 2⁶³-1 / 0 ~ 2⁶⁴-1qlonglong/qulonglong8 字节同 qint64 / quint64浮点类型Qt 类型大小说明qfloat162 字节IEEE 754 半精度浮点float4 字节单精度C 原生double8 字节双精度C 原生qreal8 字节默认等同于double字符类型// QChar —— 存储单个 Unicode 字符2字节QChar ch1A;QChar ch2QChar(0x4E2D);// 中Unicode 编码QChar ch3QChar::fromLatin1(B);ch1.isUpper();// truech1.isDigit();// falsech1.toLower();// ach1.unicode();// 65Unicode 码点字节数组// QByteArray —— 存储原始字节数据QByteArraydata(Hello);data.append( Qt);data.size();// 10data.at(0);// Hdata.toHex();// 48656c6c6f205174data.toBase64();// SGVsbG8gUXQdata.toUpper();// HELLO QT// 与 QString 互转QString strQString::fromUtf8(data);QByteArray bytesstr.toUtf8();万能容器// QVariant —— 可存储几乎任何 Qt 类型QVariantv1(42);QVariantv2(3.14);QVariantv3(QString(Hello));QVariantv4(QDate::currentDate());// 取值v1.toInt();// 42v2.toDouble();// 3.14v3.toString();// Hellov4.toDate();// QDate// 类型判断v1.typeName();// intv1.isValid();// true日期与时间// QDate —— 日期QDate d1QDate::currentDate();// 今天QDated2(2026,7,7);// 指定日期d1.year();// 2026d1.month();// 7d1.day();// 7d1.dayOfWeek();// 2周二d1.daysInMonth();// 31d1.addDays(10);// 加10天d1.toString(yyyy-MM-dd);// 2026-07-07QDate::fromString(2026-07-07,yyyy-MM-dd);// 字符串 → QDate// QTime —— 时间QTime t1QTime::currentTime();// 当前时间QTimet2(14,30,0);// 14:30:00t1.hour();// 14t1.minute();// 30t1.second();// 0t1.addSecs(3600);// 加1小时t1.toString(HH:mm:ss);// 14:30:00// QDateTime —— 日期 时间QDateTime dt1QDateTime::currentDateTime();QDateTimedt2(QDate(2026,7,7),QTime(14,30));dt1.toString(yyyy-MM-dd HH:mm:ss);// 2026-07-07 14:30:00dt1.toSecsSinceEpoch();// 时间戳秒QDateTime::fromSecsSinceEpoch(1751868600);// 时间戳 → QDateTime容器类// QList —— 有序列表最常用QListintlist;list.append(1);list.append(2);list.append(3);list.at(0);// 1list.size();// 3list.contains(2);// truelist.removeAt(1);// 删除索引1的元素// QStringList —— 字符串列表继承自 QListQStringQStringList sl;sl张三李四王五;sl.append(赵六);sl.join(,);// 张三,李四,王五,赵六sl.contains(李四);// truesl.sort();// 排序// QMap —— 有序键值对按 key 排序QMapQString,intmap;map[语文]90;map[数学]95;map.insert(英语,88);map.keys();// [语文, 数学, 英语]有序map.values();// [90, 95, 88]map.contains(数学);// true// QHash —— 无序键值对查找更快QHashQString,inthash;hash[语文]90;hash[数学]95;hash.keys();// 顺序不固定几何与图形类型// QPoint / QPointF —— 点整数 / 浮点QPointp1(10,20);p1.x();// 10p1.y();// 20// QSize / QSizeF —— 尺寸QSizes1(100,200);s1.width();// 100s1.height();// 200// QRect / QRectF —— 矩形x, y, width, heightQRectr1(10,20,100,200);r1.x();// 10r1.width();// 100r1.center();// QPoint(60, 120)r1.contains(QPoint(50,50));// true// QColor —— 颜色QColorc1(red);QColorc2(255,128,0);QColorc3(#FF8000);c1.red();// 255c1.green();// 0c1.blue();// 0c1.name();// #ff0000其他常用类型类型说明示例QUrlURL 地址QUrl(https://qt.io)QSize尺寸宽×高QSize(800, 600)QMargins四边边距QMargins(10, 5, 10, 5)QUuid全局唯一标识符QUuid::createUuid().toString()QRegExp/QRegularExpression正则表达式字符串匹配与提取QPairT1, T2二元组QPairQString, int(age, 20)使用建议需求推荐类型存储文本QString存储二进制数据QByteArray存储单个字符QChar存储列表QListT/QStringList存储键值对QMap有序/QHash高性能存储不确定类型QVariant存储日期时间QDateTime跨平台整数qint32/qint64等存储坐标/尺寸QPoint/QSize/QRect类型转换关系总览int/double/bool↕QString::number()/toInt()/toDouble()QString ↕toUtf8()/fromUtf8()QByteArray ↕ 构造函数/toXxx()QVariant万能容器可装以上所有类型基本覆盖了日常开发中 90% 以上的字符串操作场景。☀