QT QString类
字符串有如下几个操作符
QString提供了一个二元的"+"操作符用于组合两个字符串,并提供了一个"+="操作符用于将一个字符串追加到另一个字符串的末尾,例如:
QString str1="welcome";
str1=str1+"to you !";//str1="welcome to you !"
QString str2="hello ,";
str2+="world!"//str2="hello ,world!"
QString::append()函数具有与"+="操作符同样的功能,实现在一个字符串的末尾追加另一个字符串,例如:
QString str1="welcome";
QString str2="to";
str1.append(str2);//str1="welcome to"
str1.append("you !");//str1="welcome to you!"
组合字符串的另一个函数QString::sprintf(),此函数支持的格式定义符和C++库中的函数sprintf()定义一样,例如
QString str;
str.sprintf("%s","welcome");//str="welcome"
str.sprintf("%s","to you!");//str="to you!"
str.sprintf("%s %s","welcome ","to you");//str="welcome to you"
void Dialog::add()
{
QString s1=edit1->text();
QString s2=edit2->text();
QString s3=s1+s2;
s3+="end!";
/*
* QString内部维护了字符串数组
*/
const char *arr=s3.toStdString().data();
QString s4=arr;
QString s5;
//注意sprintf的参数是字符串,而不是QString对象
s5.sprintf("%s","welcome ");
s5.sprintf("%s","to you!");
s5.sprintf("%s - %s",s1.toStdString().data(),s2.toStdString().data());
label1->setText(s5);
}
比较两个字符串也是经常使用的功能,QString提供了多种比较手段。
operator<(const QString &);比较一个字符V换是否小于另一个字符串,如果是,则返回true。
operator<=(const QString &);比较一个字符串是否小于等于另一个字符串,如果是,则返回true。
operator==(const QString &);比较两个字符串是否相等,如果相等,则返回true。
operator>=(const QString &);比较一个字符串是否大于等于另一个字符串,如果是,则返回true。
QString::toInt()函数将字符串转换为整型数值,类似的函数还有toDouble、toFloat()、toLong()、toLongLong()等。下面例子说明其用法:
QString str="";
bool ok=false;
int hex=str.toInt(&ok,);//ok=true,hex=293
int dec=str.toInt(&ok,);//ok=true,dec=125
QString提供的字符编码集的转换函数将会返回一个const char*类型版本的QByteArray,即构造函数QByteArray(const char *)构造的QByteArray对象。
QByteArray类具有一个字节数组,它既可以存储原始字节(raw bytes).也可以存储传统的以""结尾的8位的字符串,在QT中,
使用QByteArray比使用const char *更方便,且QByteArray也支持隐式共享,转换函数有以下几种
toLatinl()返回一个Latin-l(ISO08859-)编码的8位字符串。
toUtf8(),返回一个UTF-8编码的8位字符串(UTF-8是ASCLL码的超级,它支持整个unicode字符集)
QString s=tr("A");
QByteArray buf1=s.toUtf8();
QString tmp;
tmp.sprintf("%x",buf1.constData()[]);
void Dialog::add()
{
QString s1=edit1->text();
QString s2=edit2->text();
/*
* tr()是QObject提供的一个函数,为多语言而准备的,所有的QT类都是继承于QObject
* 例如英语中的字符串"ok",在中文中是"好",但是这两个字符串所占用的内存空间并不相同
* tr()函数为多语言的字符串留出内存空间
*
*/
QString s3=tr("A");
QByteArray buf1=s3.toUtf8();
QString tmp;
tmp.sprintf("%x",buf1.constData()[]);
/*这里打印的是十六进制的ascll码*/
label1->setText(tmp);
}
一个NULL字符串就是使用QString的默认构造函数或者使用"(const char *)0"作为参数的构造函数创建的QString字符串对象;而一个空字符串是
一个大小为0的字符串。一个NULL字符串一定是一个空字符串,二一个空字符串未必是一个NULL字符串。例如:
QString().isNull();//结果为true
QString().isEmpty();//结果为true
QString("").isNull();//结果为false
QString("").isEmpty();//结果为true
QT QString类的更多相关文章
- Qt QString类及常用函数功能详解
QString 是 Qt 编程中常用的类,除了用作数字量的输入输出之外,QString 还有很多其他功能,熟悉这些常见的功能,有助于灵活地实现字符串处理功能. QString 存储字符串釆用的是 Un ...
- Qt 的QString类的使用
Qt的QString类提供了很方便的对字符串操作的接口. 使某个字符填满字符串,也就是说字符串里的所有字符都有等长度的ch来代替. QString::fill ( QChar ch, int size ...
- Qt常用类——Qstring
Qstring有一些方面跟C/C++中的string的使用,例如把一个字符串追加到另一个字符串中,也是用“+”.也有append函数等. 下面是是Qstring的一些常用的具体函数示例: Qt的QSt ...
- Qt学习之路(1)------Qt常用类用法说明
Qt常用类 向控制台输出文本 第一个例子,我们采用STL的方式: console.cpp #include <iostream> int main() { std::cout <&l ...
- QString类的使用(无所不包,极其方便)
Qt的QString类提供了很方便的对字符串操作的接口. 使某个字符填满字符串,也就是说字符串里的所有字符都有等长度的ch来代替. QString::fill ( QChar ch, int size ...
- Qt 串口类QSerialPort 使用笔记
Qt 串口类QSerialPort 使用笔记 虽然现在大多数的家用PC机上已经不提供RS232接口了.但是由于RS232串口操作简单.通讯可靠,在工业领域中仍然有大量的应用.Qt以前的版本中,没有提供 ...
- 详解 QT 主要类 QWidget
QWidget类是所有用户界面对象的基类,每一个窗口部件都是矩形,并且它们按Z轴顺序排列的.一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分. 先来看内容. AD: 2013云计算架构师 ...
- 【学习笔记】QT常用类及应用
一.QT基类: QObject 二.QT中常用的库 QT中的类根据功能划分在不同的库中,在用户属性.pro文件中可以看到. 三.Qt基本对话框的使用 常用5类: 通过类名可以直接调用类的静态成员函数. ...
- Qt QString转char[]数组
Qt QString转char[]数组 QString s1="1234456";char str[20]={0};strcpy(str,s1.toStdString().c_st ...
随机推荐
- Android NDK
1.Android之NDK开发 http://www.cnblogs.com/devinzhang/archive/2012/02/29/2373729.html
- 【读书笔记】iOS-忽略编译警告
一,忽略编译警告的命令. -w 禁止掉所有的编译警告. -Wno-unused-variable 只禁止掉未使用的变量的编译警告. 二,忽略编译警告的方法. targets--->Buil ...
- iOS 解决表单被键盘遮住的问题
问题 处理表单的时候,一定会碰到的就是输入控件被键盘遮住的问题,如图: 实例 左边是普通表单,中间是2B表单,右边是文艺表单. 分析 处理这种问题无非就是2个步骤: 键盘弹出时,缩小UITableVi ...
- 通过StoryBoard加载视图控制器问题
如果通过拉线的方式拉进来一个UIViewController,再将它绑定一个UIViewController类.创建的时候通过alloc,init创建出来并不会创建出一个你拉进来的UIViewCont ...
- 朝花夕拾-android 一个注册新用户时,多步填写用户资料的框架
源码地址:http://git.oschina.net/zj2012zy/Android-Demo/tree/master/AndroidDemo/setpregister 效果如下: 基本思路: 1 ...
- H5文件操作API
引言 在之前我们操作本地文件都是使用flash.silverlight或者第三方的activeX插件等技术,由于使用了这些技术后就很难进行跨平台.或者跨浏览器.跨设备等情况下实现统一的表现,从另外一个 ...
- linux路由表命令
转自此大神http://www.cnblogs.com/gunl/archive/2010/09/14/1826234.html 留在好查阅 linux 路由表维护 查看 Linux 内核路由表 使用 ...
- OS X下安装Redis及配置开机启动
1.下载redis源码包redis-3.0.5.tar(此步骤可在图形界面下操作) 2.解压源码包 tar zxvf redis-3.0.5.tar 3.编译源码并安装 #进入源码目录 cd redi ...
- netty-socketio使用namespace
一.简介 netty-socketio中的namespace可以用于区别在相同连接地址下的不同用户,当两个不同的用户打开同一个页面的时候,可以使用namespace用来标记不同用户.例如我们可以在用户 ...
- python strip() lstrip() rstrip() 使用方法
Python中的strip用于去除字符串的首尾字符串,同理,lstrip用于去除最左边的字符,rstrip用于去除最右边的字符. 这三个函数都可传入一个参数,指定要去除的首尾字符. 需要注意的是,传入 ...