QString知识整理
一、QString的基本用法
1.字符串的连接
//第一种连接方式
QString str1 = "hello ";
str1 += "world";
//第二种连接方式
str1.append(str2);
//第三种连接方式:arg函数
str = QString(“I bought %1 pounds of %2 apples.”).arg(10).arg(“red”);
//第四种连接方式: arg函数
str = str.asprintf(“%s”, “Welcome”);
QByteArray ba = str.toLocal8Bit();
const char *c_str = ba.data();
str = QString::asprintf(“%s %s %s”, c_str, “to”, “future”);
2.字符串的插入
//1在任意位置插入
str.insert(int, string); //Params:插入位置,插入的字符串
//在字符串首部插入一个字符串
str.prepend(“hello”);
//替换字符串
str.replace(int, int, string);//Params:替换的位置、替换字符串的长度、替换的字符串
//去掉首尾空格
str.trimmed();
//去掉中间的空格(只保留中间的一个空格)
str.simplified();
3.字符串的查找
//判断一个字符串是否为另一个字符串的前缀
QString str = “ Welcome to you!”;
//Params:需要判断的字符串,是否需要大小写敏感.
//其中CaseSensitive为开启大小写识别,CaseInsensitive为关闭大小写识别
//如果不加此参数,则默认开启大小写识别。
str.startWith(“Welcome”, Qt::CaseSensitive);
//判断一个字符串是否为另一个字符串的后缀(参数同前缀)
str.endWith(“!”);
//判断一个字符串是否包含另一个字符串
str.contains(“to”);
4.字符串的比较
//通过运算符比较字符串(> < >= <= ==)
“a” < “b”;//通过比较ASCII码
//通过函数比较(前面大于后面返回1, 等于返回0, 小于返回-1)
QString::localeAwareCompare(“a”, “b”);//使用本地字符集,与平台有关
QString(“c”).compare(“b”);//使用Unicode编码,与平台无关,且速度比较快
5.字符串的转换
(1)其他类型
str.toInt();
//按照16进制转换
str.toInt(bool, 16);//Params:bool转换成功返回true,否则返回false,参数2为需要转换的进制
//返回一个拉丁文(ISO8859-1)
str.toLatin1();
(2)UTF-8 8Bytes类型
//返回Utf-8编码的8位字符串
str.toUtf8();
//返回一个系统本地(locale)编码的8位字符串
str.toLocal8Bit();
二、其他补充知识
1.QT内置输出流
qDebug()<< *****;//内有自动换行
2.NULL和Empty的区别
(1) NULL:QString 的默认构造函数(QString()),构造函数创建对象为NULL。
(2) empty:长度为0的字符串;
(3)如果一个QString对象是NULL,那么一定是empty;但是如果是empty,则不一定是NULL;
3.正则表达式的简单使用
此处使用的为QRegularExpression类
QString text = “This is some text: text123, Text321, ttxxaa”;
//(?i)表示忽略大小写, t表示查找的字符, \w表示查找字符后的任意位
QString pattern = “(?i)t\\w+”;
QRegularExpression re(pattern);
QRegularExpressionMatch match = re.match(text);
while(match.hasMatch())
{
qDeBug()<<match.captured();
re.match(text, match.capturedEnd());
}
4.常用数学公式
//绝对值
qAbs(int/double);
//最大值
qMax(int/double, int/double);
//取整函数 (四舍五入)
qRound(int/double);
//交换函数
qSwap(int/double, int/double);
//正弦函数
qSin(3.14/2);//此参数为弧度制