C++跨平台库QT学习5 字符串处理类QString

C++跨平台库QT学习5 字符串处理类QString

  • 一、QString封装的一些方法
    • 1. 初始化与空值判断
    • 2. 长度
    • 3. 字符串组合与格式化
    • 4. 索引
    • 5. 其它一些方法
  • 二、类型转换
  • 三、进制转换

一、QString封装的一些方法

QString提供了支持Unicode的字符串处理方法。
头文件:

#include  

qmake设置:

QT += core

1. 初始化与空值判断

	// 建立一个空的字符串,length=0
    QString string;
    // 上面一句默认执行的就是下面的构造方法
    string = QString((const char *)0);
    // isNull 输出true
    qDebug() << string.isNull() << endl;
    // length 输出0
    qDebug() << string.length() << endl;
    // isEmpty 输出true
    qDebug() << string.isEmpty() << endl;
    // 下面空字符串不是null,输出false
    qDebug() << QString("").isNull() << endl;
    // 下面空字符串,输出true
    qDebug() << QString("").isEmpty() << endl;    

2. 长度

QString b="Hello";
// 下面长度输出5
qDebug() << b.length() << endl();

3. 字符串组合与格式化

	QString c="Hello";
	// 下面组合字符串,输出Hello World
	qDebug() << c.append(" World") << endl();
	// 在前面插入字符
	qDebug() << c.prepend(" ") << endl();
	// 字符串格式化输出
    QString firstName( "Zhang" );
    QString lastName( "San" );
    QString fullName;
    fullName = QString( "First name is %1, last name is %2" ).arg( firstName, lastName );
    // 与下面一句等价
    fullName = QString( "First name is %1, last name is %2" ).arg( firstName).arg(lastName );    
    // 输出 "First name is Zhang, last name is San" 
    qDebug() << fullName << endl;
    

4. 索引

    const QString string( "Hello World!" );
    // 输出第3个位置的字符
    qDebug() << string.at(3) << endl;
    
    // 判断是否包含目标字符串
	QString str1="Hello my world";
	// N=true,不区分大小写
	bool N1=str1.contains ("he", Qt::CaseInsensitive) ; 
	// N=false,区分大小写
	bool N2=str1.contains ("he", Qt::CaseSensitive) ;  
	
	// 判断开头和结尾
	QString str2="Hello my world";
	bool N3=str2.endsWith ("ld", Qt::CaseInsensitive) ; // N=true,不区分大小写
	bool N4=str2.endsWith ("LD", Qt::CaseSensitive) ; // N=false,区分大小写
	bool N5=str2.startsWith ("he") ; // N=true,缺省为不区分大小写

5. 其它一些方法

  • toUpper() :转大写
  • toLower():转小写
  • count()、size() 和 length() :获取长度,一个汉字算两个字符
  • trimmed() :去掉字符串首尾的空格
  • simplified() :去掉字符串首尾的空格,当中的连续空格用一个空格代替
  • indexOf(),lastIndexOf:找目标字符串的位置
  • isNull():是否未赋值
  • isEmpty():是否空值
  • left():从左边取一定数量字符
  • right():从右边取一定数量字符
  • section():使用指定字符串分割,取第n个分段

二、类型转换

	// 字符串转整形
   QString string("10");
   int b = string.toInt();
	// 字符串转浮点
	QString string("10.2");
	float b = string.toFloat();

格式化输出:

    QString string("10");
    float b = string.toFloat();
    string=string.asprintf ("%.3f",b);
    qDebug() << string << endl;
    
// 以下几句等价
str=QString::number(total,'f',2);
str=QString::asprintf ("%.2f", total);
str=str.setNum(total,'f',2);
str=str.sprintf ("%.2f,total);

其它一些类型转换方法:

// 转整型
int toInt(bool * ok = Q_NULLPTR, int base = 10) const
long toLong (bool * ok = Q_NULLPTR, int base = 10) const
short toShort (bool * ok = Q_NULLPTR, int base = 10) const
uint toUInt (bool *ok = Q_NULLPTR, int base = 10) const
ulong toULong (bool *ok = Q_NULLPTR, int base = 10) const

// 转浮点型
double toDouble(bool *ok = Q_NULLPTR) const
float toFloat (bool * ok = Q_NULLPTR) const

三、进制转换

// 程序原型
Qstring &setNum (int n, int base = 10)
QString number (int n, int base = 10)
// 示例1,10进制转16进制、2进制显示
    QString str("15");
    int val=str.toInt();//缺省为十进制
    // str=QString::number(val, 16);//转换为十六进制的字符串
    str=str.setNum (val, 16); //十六进制
    str=str.toUpper();
    // 下面输出F
    qDebug() << str << endl;
    str=str.setNum (val, 2) ; //二进制
    // 下面输出1111
    qDebug() << str << endl;

// 示例2,二进制转十进制、十六进制
    QString str("1111");
    bool ok;
    int val = str.toInt(&ok, 2);
    
    QString str1=QString::number (val, 10) ;//数字显示为十进制字符串
    // 输出15
    qDebug() << str1 << endl;
    QString str2=str.setNum (val, 16) ; //显示为十六进制
    str2=str2.toUpper();
    // 输出F
    qDebug() << str2 << endl;
    

你可能感兴趣的:(QT)