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();