QString和QByteArray的区别
- 本质
- 格式转换
- QString字符串格式化打印
- 长度
本质
QString是对QByteArray的再次封装
QString可以通过char*来构造,也可以通过QByteArray来构造
QByteArray就是char*
QString是编码后的char*
QString也是封装了字符串, 但是内部的编码为utf8, UTF-8属于Unicode字符集, 它固定使用多个字节(window为2字节, linux为3字节)来表示一个字符
QByteArray可以看做是c语言中 char*的升级版本。我们在使用这种类型的时候可通过这个类的构造函数申请一块动态内存,用于存储我们需要处理的字符串数据
格式转换
可以将QString转换为QByteArray
QString ->QByteArray ->char*
qDebug()<<"char* to QString";
char* c_str = "hello";
QString string = QString (QLatin1String(c_str));
qDebug()<<string;
qDebug()<<"QString to char* (two step)";
QString string2("hello2");
std::string a1 = string2.toLocal8Bit().data();
std::string a2 = string2.toLatin1().data();
std::string a3 = string2.toUtf8().data();
std::cout<<a1<<std::endl;
std::cout<<a2<<std::endl;
std::cout<<a3<<std::endl;
QString字符串格式化打印
QString aa = QString("大家好,我是(%1),我的工号是(%2),我宣布(%3)!!!").arg("王健林").arg(001).arg("取消加班");
qDebug()<<aa;
长度
QString计算的是字符数目
QByteArray计算的是字节数(汉字3字节,英文1字节,数字1字节)
QString a1 = "我a1";
QByteArray a2 = "我a1";
qDebug()<<a1.length()<<a2.length();