QT-QString字符串

本文最后更新于:1 年前

  • 16-bit QChars ushort Unicode 4.0

  • 封装了字符串处理功能

  • 用cout显示时需转换

使用qDebug()函数,它可以把调试信息直接输出到控制台上。

输出到控制台上有两种方式:

(1) 将字符串当做参数传给qDebug()函数。(这种方法可以不用添加头文件#include) 如 qDebug(“x:%d”,x);

(2) 使用流输出的方法输出多个字符串。(需要添加 #include头文件)如 qDebug() << “y:” << y;

使用cout输出时需要先进行类型转换,QChar类型的单个字符需先转换成ASCII码,如 cout << str[i].toLatin(); QString类型的字符串可以直接使用 str.toStdString();

int转QString

方法一:用QString的arg**()**函数可以完美解决其他类型转换为字符串的问题。

代码:

1
2
3
int str;
QString str;
strValue = tr("%1").arg(intValue);

方法二:QString**::**number();

代码:

1
2
int tmp;
QString str = QString::number(tmp);

QString转int

直接调用toInt**()**函数

代码:

1
2
QString str;
int tmp = str.toInt();

常用指令

  • 空判断

    • == “ ” 空串和未初始化时都为真

    • isNull 对象未初始化

    • isEmpty 空串

  • 字符串拼接

    • +=

    • str**.append(“test3”)**

  • 格式化表示

1
2
3
4
QString str;
str = QString("name=%1 arg=%2 %3 %4 %5").arg("xiaoming").arg(15).arg(14.5).arg(123,0,2).arg(255,6,16);

//arg(123,0,2) 中 第二个参数表示最小宽度,第三个参数表示进制
  • 类型转换(除格式化外的方法)

    • 单个整型转字符串 QString num = QString::number(14);

    • 单个浮点型转字符串 QString num = QString::number(14.6);

    • 字符串转整型 str.toInt();

    • 字符串转浮点型 str.toDouble();

         表示一个浮点数的字符串不能使用toInt(),转换结果会是0;反之,表示一个整型的字符串使用toDouble()不会有问题。
      
  • 遍历字符串

    迭代器遍历

1
2
3
4
5
for(QString::iterator itr=itstr.begin();itr!=itstr.end();++itr)
 {
     //(*itr).toLatin1();
     cout<< itr->toLatin1();
 }

​ 下标遍历

1
2
3
4
5
6
7
8
 for(int i=0;i>itstr.size();++i)

{

cout<<str[i].toLatin1();

}
//旧版本c++的std::vector中,size方法会遍历一遍vector,影响效率。此处QString不会。
  • 字符串查找

    • 查找子串第一次出现的位置(若没有查到返回-1) int pos = itstr.indexOf("xc");

    • 查找字串第二次出现的位置(相当于设置了起始查找位置)

      QString key = "xc";

int pos2 = str.indexOf(key,pos+key.size());

  • ​ 查找子串最后一次出现的位置 itstr.lastIndexOf("xc");

    • 正则查找 itstr.indexOf(QRegExp("[0-9]+"));
  • 字符串截断

    • 去除结尾子串(直接修改原字符串) itstr.chop(5);

    • 最左侧开始截取指定长度 itstr.left(itstr.indexOf(“xc”));

    • 最右侧开始截取指定长度 itstr.right(itstr.size()-itstr.indexOf(“xc”)-2);

  • 字符串替换

    • 直接修改原字符串 itstr.replace(“[name]”,”xiaoming”);

    • 也可用正则表达式 itstr.replace(QRedExp(“[0-9]+”),”[NUM]”);

  • 字符串切割

  • QStringList list1 = str.split(“,”);