字符集
ANSI标准
GB2312 GBK编码
UTF-8
1字节 0xxx xxxx
2字节 110x xxxx 10xx xxxx
3字节 1110 xxxx 10xx xxxx 10xx xxxx
4字节 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx
UTF-16和UTF-32
字节序BOM
QString
QString常用功能
1. 空判断 == “” 是等于 isNull + isEmpty
QString abc = "";
if(abc == "")
{
qDebug() <<"abc is null" << endl;
}
2. 字符串拼接 +=
QString str1 = "test1";
str1 += "test2";
str1 += 'A';
str1.append("test3");
qDebug() << str1;
QString str2("test4");
qDebug() << str2;
3. 格式化字符串 %1 %2 arg()
QString str1;
str1 = QString("name = %1, age = %2, %3,%4, %5")
.arg("liming")
.arg(15)
.arg(14.5)
.arg(123, 0, 2)
.arg(255, 0, 16);
qDebug() << str1;
其中arg(123, 0, 2)中,
123为显示数值;
0为显示位数,如果设置值小于应该显示的位数,则全部显示,如果大于应该显示位数,则前面补空格;
2为二进制,可以设置2进制、8进制、16进制等等;
QString num1 = QString::number(50);
qDebug() << num1;
int i1 = num1.toInt();
qDebug() << "int i1 = " << i1;
qDebug() << "double i1 = " << num1.toDouble();
QString num2 = QString::number(15.6);
qDebug() << num2;
qDebug() << num2.toInt();
qDebug() << num2.toDouble();
结果为
"50"
int i1 = 50
double i1 = 50
"15.6"
0
15.6
注意: double转int时值为0
4.遍历字符串
QString str = "xcjasd,asdasd,[name],[id],[name],asda[name]sdsa";
for (int var = 0; var < str.size(); ++var) {
cout << str[var].toLatin1();
}
cout << endl;
cout << "===========================" << endl;
QString::iterator iter = str.begin();
for (; iter != str.end(); ++iter)
{
// cout << iter->toLatin1();
cout << (*iter).toLatin1();
}
5.字符串查找
QString str = "xcjasd,asdasd,[name],[id],[name],asda[name]sdsa";
QString key = "[name]";
int pos1 = str.indexOf(key);
cout << "pos1 = " << pos1 << endl;
int pos2 = str.indexOf(key, pos1 + key.size());
cout << "pos2 = " << pos2 << endl;
int pos3 = str.indexOf(key, pos2 + key.size());
cout << "pos3 = " << pos3 << endl;
cout << "tttt : " << str.indexOf("tttt");
结果为:
pos1 = 14
pos2 = 26
pos3 = 37
tttt : -1