赞
踩
0 到 127之间的字符,依旧是一个字节代表一个字符,超出部分 2 个字节来表示一个字符
变长的编码方式,单字节与ASCII相同,对于n字节的符号(n > 1),首字节前n位为1,n+1为0,后面字节前两位都是10
for(QString::iterator itr = itstr.begin();itr != itstr.end();itr++)
for(int i = 0; i < itstr.size(); itr++)
原始字符串.indexOf(要查找的字符串,查找的起始位置),如果查找到了就返回当前查找字符串起始位置的索引,如果找不到就返回-1。
QString str = "Bananas";
str.startsWith("Ban"); // returns true
str.startsWith("Car"); // returns false
QString str = "Bananas";
str.endsWith("anas"); // returns true
str.endsWith("pple"); // returns false
QString str = " lots\t of\nwhitespace\r\n ";
str = str.trimmed();
// str == "lots\t of\nwhitespace"
QString s = "Montreal";
s.remove(1, 4);
// s == "Meal"
QString x = "sticky question";
QString y = "sti";
x.indexOf(y); // returns 0
x.indexOf(y, 1); // returns 10
x.indexOf(y, 10); // returns 10
x.indexOf(y, 11); // returns -1
QString x = "crazy azimuths";
QString y = "az";
x.lastIndexOf(y); // returns 6
x.lastIndexOf(y, 6); // returns 6
x.lastIndexOf(y, 5); // returns 2
x.lastIndexOf(y, 1); // returns -1
QString x = "Pineapple";
QString y = x.right(5); // y == "apple"
QString x = "Pineapple";
QString y = x.left(4); // y == "Pine"
QString x = "Nine pineapples";
QString y = x.mid(5, 4); // y == "pine"
QString z = x.mid(5); // z == "pineapples"
QString s = "abcd";
s.chop(2);
qDebug() << s << endl; //ab
QString str("abcdef");
str.replace("a","abcdf"); //abcdefbcdef
QString str("ab,cd,ef,g,h");
QStringList list = str.split(",");
qDebug() << list;
正则表达式匹配关键字规则说明
. 匹配任意字符
+表示重复匹配 1到多个
*表示匹配0 到多个
规则关键字说明和实例
^ 表示匹配字符串的开始位置
$ 表示字符串的结束位置
?前一个匹配是可选的,也就是可有可无
QString str = "abcdefg123hijk[num]lmn 456 958";
int pos = str.indexOf(QRegExp("[0-9]+"));
cout << pos << endl; // 7
QString str2 = str;
str2.replace(QRegExp("[0-9]+"),"[num]");
qDebug() << str2 << endl; //"abcdefg[num]hijk[num]lmn [num] [num]"
QStringList stringList = str.split(QRegExp("[0-9]+"));
for(int i = 0;i < stringList.size();i++)
{
qDebug() <<stringList[i] << endl;
}
Qt Creator中默认是utf-8编码,可直接对中文进行输出。
在vs中默认编码是GB2312,需要对中文进行字符集设置,通过一个预处理宏进行设置,或是进行转换,QStringLiteral(中文)。转换成QString::fromLocal8Bit(“中文测试”)也可以。
#pragma execution_character_set("UTF-8")
或者通过 vs 高级保存选项进行设置。
char *src = "元数据中文GBK";
//本地编码方式 默认GBK
QString str1 = QString::fromLocal8Bit(src);
注意:vs 里面的cout 输出只能是gbk编码格式,qDebug() 输出的是utf-8格式
QString str = QString::fromLocal8Bit("中文测试");
qDebug() << str << endl;
cout << str.toStdString() << endl; //直接进行转换会出现乱码
cout << str.toLocal8Bit().toStdString() << endl; //正常输出
int QString::toInt(bool *ok = Q_NULLPTR, int base = 10) const
long QString::toLong(bool *ok = Q_NULLPTR, int base = 10) const
short QString::toShort(bool *ok = Q_NULLPTR, int base = 10) const
uint QString::toUInt(bool *ok = Q_NULLPTR, int base = 10) const
ulong QString::toULong(bool *ok = Q_NULLPTR, int base = 10) const
这些函数如果不设置参数,缺省表示从十进制表示的字符串转换为整数,若指定整数基参数,还可以直接将二进制、十六进制字符串转换为整数。
float QString::toFloat(bool *ok = Q_NULLPTR) const
double QString::toDouble(bool *ok = Q_NULLPTR) const
可以使用QString的静态函数number()和asprintf(),也可以使用其公共函数setNum()和sprintf()。QString的sprinf()函数与C语言里的sprintf()函数的格式时一样的,而setNum()和number()函数使用另外一种格式定义,而且setNum和number有多个重载函数定义,可以处理各种类型的整数和浮点数,在处理整数时还可以指定进制,例如将一个整数直接转换为十六进制或二进制字符串。
QString asprintf(const char *cformat, ...)
QString number(long n, int base = 10)
QString number(uint n, int base = 10)
QString number(int n, int base = 10)
QString number(ulong n, int base = 10)
QString number(qlonglong n, int base = 10)
QString number(qulonglong n, int base = 10)
//第一个参数表示所想要转换的double类型数据(就算实际参数不是double类型,形参会将其赋值为double类型)
//第二个参数和第三个参数分别表示格式和精度
QString number(double n, char format = 'g', int precision = 6)
QString & setNum(int n, int base = 10)
QString & setNum(ushort n, int base = 10)
QString & setNum(short n, int base = 10)
QString & setNum(uint n, int base = 10)
QString & setNum(long n, int base = 10)
QString & setNum(ulong n, int base = 10)
QString & setNum(qlonglong n, int base = 10)
QString & setNum(qulonglong n, int base = 10)
QString & setNum(float n, char format = 'g', int precision = 6)
QString & setNum(double n, char format = 'g', int precision = 6)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。