从零开始学Qt(29):字符串QString类的常用功能

QString是Qt编程中常用的类,除了用作数字量的输入输出之外,QString还有很多其他功能, 熟悉这些常见的功能,有助于灵活地实现字符串处理功能。

QString存储字符串采用的是Unicode码,每一个字符是一个16位的QChar,而不是8位的char,所以QString处理中文字符没有问题,而且一个汉字算作是一个字符。

字符串转换为数值

QString类从字符串转换为整数的函数有:

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

这些函数如果不设置参数,缺省表示从十进制表示的字符串转换为整数;若指定整数基参数,还可以直接将二进制、十六进制字符串转换为整数。

QString将字符串转换为浮点数的函数有:

double toDouble(bool *ok = Q_NULLPTR) const
float toFloat(bool *ok = Q_NULLPTR) const

数值转换为字符串

可以使用QString的静态函数number()和asprintf(),也可以使用其公共函数setNum()和sprintf()。

QString的sprintf()函数与C语言里的sprintf()函数的格式是一样的,而setNum()和number()函数使用另外一种格式定义,而且setNum和number有多个重载函数定义,可以处理各种类型的整数和浮点数,在处理整数时还可以指定进制,例如将一个整数直接转换为十六进制或二进制字符串。

如果对于一个浮点数db,希望显示两位小数,下面4行语句都可以实现这个功能。

QString str;
str=QString::number(db,’f’,2);
str=QString::asprintf("%.2f ", db);
str=str.setNum(db, ‘f’, 2);
str=str.sprintf("%.2f",db);

进制转换

将一个整数转换为不同进制的字符串,可以使用QString的函数setNum()和number(),它们的函数原型是:

QString &setNum (int n, int base = 10)
QString number (int n, int base = 10)

其中n是待转换的整数,base是使用的进制,缺省为十进制,也可以指定为十六进制和二进制。下面是读取二进制字符串,然后转换为十进制和十六进制的代码。

QString str = ui->editBin->text(); //读取二进制字符串
bool ok;
int val = str.toInt(&ok, 2); //以二进制数读入
str = QString::number(val,10); //数字转换为十进制字符串
str = str.setNum(val, 16); // 数值转化为十六进制
str = str.toUpper();

字符串添加

append()在字符串的后面添加字符串,prepend()在字符串的前面添加字符串,如:

QString strl=”卖”, str2="拐”;
QString str3=strl;
strl.append(str2); // str1=”卖拐"
str3.prepend(str2); // str3="拐卖"

大小写转换

toUpper()将字符串内的字母全部转换为大写形式,toLower()将字母全部转换为小写形 式,如:

QString strl="Hello, World", str2;
str2=strl.toUpper(); // strl="HELLO, WORLD"
str2=strl.toLower(); // strl="hello, world"

字符串大小

count()、size()和length()都返回字符串的字符个数,这3个函数是相同的,但是要注意,字符串中如果有汉字,一个个汉字算一个字符。

QString strl="NI好";
N=strl.count(); // N=3
N=strl.size(); // N=3
N=strl.length(); // N=3

去除空格

trimmed()去掉字符串首尾的空格,simplified()不仅去掉首尾的空格,中间连续的空格也用一个空格替换。

QString strl=" Are you OK? ", str2;
str2=strl.trimmed(); //strl=" Are you OK?"
str2=strl.simplified(); //strl="Are you OK?"

查找子字符串位置

indexOf()函数的原型为:

int indexOf(const QString &str, int from=0, Qt::CaseSensitivity cs = Qt::CaseSensitive} const

其功能是在自身字符串内査找参数字符串str出现的位置,参数from是开始査找的位置,Qt::CaseSensitivity cs参数指定是否区分大小写。

lastIndexOf()函数则是查找某个字符串最后出现的位置。

QString strl="G:Qt5BookQT5.9Studyqw.cpp";
N=strl.indexOf("5.9"); // N=13
N=strl.lastlndexOf(""); // N=21

“”是转义字符,如果要查找需要输入“”。

判断是否为空字符串

isNull()和isEmpty()两个函数都判读字符串是否为空,但是稍有差别。如果一个空字符串,只有“”, isNull()返回false,而isEmpty()返回true;只有未赋值的字符串,isNull()才返回true。

QString strl, str2="";
N=strl.isNull(); // N=true 未赋值字符串变量
N=str2.isNull(); // N=false 只有""的字符串,也不是Null
N=str1.isEmpty(); // N=true
N=str2.isEmpty(); // N=true

QString只要赋值,就在字符串的末尾自动加上“”,所以,如果只是要判断字符串内容是否为空,常用isEmpty()。

判断是否包含

contains()判断字符串内是否包含某个字符串,可指定是否区分大小写。

QString strl=”G: Qt5BookQT5.9Studyqw.cpp”;
N=strl.contains (".cpp", Qt::CaseInsensitive); // N=true,不区分大小写
N=strl.contains (".CPP", Qt::CaseSensitive); // // N=false,区分大小写

判断开头结尾

startsWith()判断是否以某个字符串开头,endsWith()判断是否以某个字符串结束。

QString strl="G:Qt5BookQT5.9Studyqw.cpp";
N=strl.endsWith(".cpp", Qt::Caselnsensitive); // N=true,不区分大小写
N=strl.endsWith(".CPP", Qt::CaseSensitive); // N=false,区分大小写
N=strl.startsWith("g: "); // N=true, 缺省为不区分大小写

截取字符串

left()表示从字符串中取左边多少个字符,right()表示从字符串中取右边多少个字符。注意, 一个汉字被当作一个字符。

QString str2, strl="学生姓名,男,1984-3-4,汉族,山东";
N=strl.indexOf (","); // N=4, 第一个“,”出现的位置
str2=strl.left(N); //str2=”学生姓名”
N=strl.lastIndexOf (","); // N=18 最后一个逗号的位置
str2=strl.right(strl.size()-N-l); // str2=”山东”,提取最后一个逗号之后的字符串

section()函数的原型为:

QString section(const QString &sep, int start, int end = -1, SectionFlags flags = SectionDefault) const

其功能是从字符串中提取以sep作为分隔符,从start端到end端的字符串。

QString str2, strl="学生姓名,男,1984-3-4,汉族,山东";
str2=str1.section(",",0,0); // str2="学生姓名"
str2=str1.section(",",1,1); // str2="男"
str2=str1.section(",",0,1); // str2="学生姓名,男"
展开阅读全文

页面更新:2024-05-01

标签:字符串   功能   汉字   整数   大小写   空格   函数   字符   姓名   位置   常用

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top