1、QString常用转换
f9设置
f5开始调试,进入下一个断点
f10单步
f11单步进入
shift+f11单步跳出
QString采用隐式共享:
16位unicode码
读共享,写复制,数据相同时,执行浅拷贝,仅复制数据库的指针,引用计数+1,数据不同深拷贝
1.1、QString转(int、float、double)
// 转int
QString strAge("18");
int age = strAge.toInt();
qDebug()<<age;
// 转float
QString strPI("3.14");
float PI = strPI.toFloat();
// 转double
double dPI = strPI.toDouble();
qDebug()<<PI;
1.2、(int,float,double)转(QString)
int year = 1949;
float width = 6.6f;
QString strYear,strHeight;
strYear = strYear.number(year);
strHeight = strHeight.setNum(width);
qDebug()<<strYear;
qDebug()<<strHeight;
1.3、const char* 转QString
const char* hi = "hi";
QString strhi(hi);
qDebug()<<strhi;
1.4、 QString 转 QByteArray 转const char*
QString strTom = "TOM";
QByteArray bstrtom = strTom.toUtf8();
const char* cTom = bstrtom.data();
qDebug()<<cTom;
1.5、QString 转QDateTime
QString time = "1949-10-01 10:00:00";
QDateTime dtime = QDateTime::fromString(time,"yyyy-MM-dd hh:mm:ss");
qDebug()<<dtime;
1.6、QDateTime 转QString
QDateTime dtcurrent = QDateTime::currentDateTime();
QString strCurrent = dtcurrent.toString("yyyy-MM-dd hh:mm:ss");
qDebug()<<strCurrent;
2、常用方法
2.1、拼接
// 方法一
QString s;
s.sprintf("%s%d%s","今天是星期",3,"吗?");
qDebug()<<s;
// 方法二
QString speopeo0 = QString("%1%2%3").arg("今天").arg(11).arg("点");
qDebug()<<speopeo0;
2.2、返回索引字符at(n)
QString sAnimal = "crab";
QChar c = sAnimal.at(2);
qDebug()<<c;
2.3、插入字符串
QString sMen = "三";
QString SFish = "鱼的记忆是秒钟的故事";
// 第5给位置插入sMen这个字符串
SFish.insert(5,sMen.toUtf8());
qDebug()<<SFish;
// prepend 在字符串起始位置插入
SFish.prepend("热带");
qDebug()<<SFish;
2.4、字符串替换
// replace() 替换 参数:替换起始位置,替换字符数,替换的内容
SFish.replace(7,3,"三个月");
qDebug()<<SFish;
2.5、字符串去掉空格
// trimmed() 去除字符串两端的空格
SFish = " "+SFish+" ";
qDebug()<<SFish;
qDebug()<<SFish.trimmed();
// simplified 去除两端空格, 中间空格以一个空格替代
SFish = "Fish had a bad memory. ";
qDebug()<<SFish.simplified();
2.6、查询字符 startsWith()、endsWith()、 contains()
QString Stom = "汤姆和我是好朋友。";
qDebug()<<Stom.startsWith("汤姆");
qDebug()<<Stom.endsWith("。");
qDebug()<<Stom.contains("好朋友");
// compare 0表示相等、CaseInsensitive大小写不敏感
qDebug()<<QString::compare("Tom","tom",Qt::CaseInsensitive);
2.7、分割字符串(split、mid)
QString strTime = "1949/10/1";
QStringList timeList = strTime.split("/");
foreach(QString ss,timeList)
qDebug()<<ss;
// mid() 截取字符串 从第五个字符开始截取,截取三个字符
QString SFriends = "汤姆和猫是好朋友";
qDebug()<<SFriends.mid(5,3);
3、QStringList 字符串链表
3.1、遍历
QStringList weekList;
weekList<<"星期一"<<"星期二"<<"星期三"<<"星期四";
weekList.append("星期五");
qDebug()<<weekList;
for(int i=0;i<weekList.size();i++)
qDebug()<<weekList.at(i);
// STL迭代器
QStringList::iterator it = weekList.begin();
for(;it!=weekList.end();it++)
{
qDebug()<<*it;
}
// Java风格迭代器
qDebug()<<"Java 风格迭代器";
QListIterator<QString> itr(weekList);
while(itr.hasNext())
{
qDebug()<<itr.next();
}
3.2、包含contains()
qDebug()<<"链表中是否有星期八:"<<weekList.contains("星期八");
3.3、插入元素insert
weekList.insert(0,"星期零");
qDebug()<<weekList;
3.4、删除
// removeFirst() 删除头
weekList.removeFirst();
// 删除尾
weekList.removeLast();
// removeOne 删除某个元素
weekList.removeOne("星期一");
// 删除指定位置元素
weekList.removeAt(0);
// 清空
weekList.clear();