Qt学习之路(2)------Qt中的字符串类
QString
QString的一些基本用法
#include <QTextStream> int main(void)
{
QTextStream out(stdout); QString a = "love"; a.append(" chess");
a.prepend("I "); out << a << endl;
out << "The a string has " << a.count()
<< " characters" << endl; out << a.toUpper() << endl;
out << a.toLower() << endl; return 0;
}
Output
$ ./basic
I love chess
The a string has 12 characters
I LOVE CHESS
i love chess
字符串初始化
字符串有几种初始化方法
#include <QTextStream> int main(void)
{
QTextStream out(stdout); QString str1 = "The night train";
out << str1 << endl; QString str2("A yellow rose");
out << str2 << endl; std::string s1 = "A blue sky";
QString str3 = s1.c_str();
out << str3 << endl; std::string s2 = "A thick fog";
QString str4 = QString::fromAscii(s2.data(), s2.size());
out << str4 << endl; char s3[] = "A deep forest";
QString str5(s3);
out << str5 << endl; return 0;
}
Output
$ ./init
The night train
A yellow rose
A blue sky
A thick fog
A deep forest
字符串元素访问
access.cpp
#include <QTextStream> int main(void)
{
QTextStream out(stdout); QString a = "Eagle"; out << a[0] << endl;
out << a[4] << endl; out << a.at(0) << endl; if (a.at(5).isNull()) {
out << "Outside the range of the string" << endl;
} return 0;
}
Output
$ ./access
E
e
E
Outside the range of the string
求字符串长度
length.cpp
#include <QTextStream> int main()
{
QTextStream out(stdout); QString s1 = "Eagle";
QString s2 = "Eagle\n";
QString s3 = "Eagle ";
QString s4 = "орел"; out << s1.length() << endl;
out << s2.length() << endl;
out << s3.length() << endl;
out << s4.length() << endl; return 0;
}
Output
$ ./length
5
6
6
8
字符串插值
#include <QTextStream> int main()
{
QTextStream out(stdout); QString s1 = "There are %1 white roses";
int n = 12; out << s1.arg(n) << endl; QString s2 = "The tree is %1m high";
double h = 5.65; out << s2.arg(h) << endl; QString s3 = "We have %1 lemons and %2 oranges";
int ln = 12;
int on = 4; out << s3.arg(ln).arg(on) << endl; return 0;
}
Output
$ ./interpolation
There are 12 white roses
The tree is 5.65m high
We have 12 lemons and 4 oranges
求子串
substrings.cpp
#include <QTextStream> int main(void)
{
QTextStream out(stdout); QString str = "The night train"; out << str.right(5) << endl;
out << str.left(9) << endl;
out << str.mid(4, 5) << endl; QString str2("The big apple");
QStringRef sub(&str2, 0, 7); out << sub.toString() << endl; return 0;
}
$ ./substrings
train
The night
night
The big
Looping through strings
遍历字符串中的字符
#include <QTextStream> int main(void)
{
QTextStream out(stdout); QString str = "There are many stars."; foreach (QChar qc, str) {
out << qc << " ";
} out << endl; for (QChar *it=str.begin(); it!=str.end(); ++it) {
out << *it << " " ;
} out << endl; for (int i = 0; i < str.size(); ++i) {
out << str.at(i) << " ";
} out << endl; return 0;
}
Output
$ ./looping
T h e r e a r e m a n y s t a r s .
T h e r e a r e m a n y s t a r s .
T h e r e a r e m a n y s t a r s .
字符串比较
comparing.cpp
#include <QTextStream> #define STR_EQUAL 0 int main(void)
{
QTextStream out(stdout); QString a = "Rain";
QString b = "rain";
QString c = "rain\n"; if (QString::compare(a, b) == STR_EQUAL) {
out << "a, b are equal" << endl;
} else {
out << "a, b are not equal" << endl;
} out << "In case insensitive comparison:" << endl; if (QString::compare(a, b, Qt::CaseInsensitive) == STR_EQUAL) {
out << "a, b are equal" << endl;
} else {
out << "a, b are not equal" << endl;
} if (QString::compare(b, c) == STR_EQUAL) {
out << "b, c are equal" << endl;
} else {
out << "b, c are not equal" << endl;
} c.chop(1); out << "After removing the new line character" << endl; if (QString::compare(b, c) == STR_EQUAL) {
out << "b, c are equal" << endl;
} else {
out << "b, c are not equal" << endl;
} return 0;
}
$ ./comparing
a, b are not equal
In case insensitive comparison:
a, b are equal
b, c are not equal
After removing the new line character
b, c are equal
字符串和其他类型进行转换
Output
#include <QTextStream> int main(void)
{
QTextStream out(stdout); QString s1 = "12";
QString s2 = "15";
QString s3, s4; out << s1.toInt() + s2.toInt() << endl; int n1 = 30;
int n2 = 40; out << s3.setNum(n1) + s4.setNum(n2) << endl; return 0;
}
Output
$ ./converts
27
3040
字符类型
letters.cpp
#include <QTextStream> int main(void)
{
QTextStream out(stdout); int digits = 0;
int letters = 0;
int spaces = 0;
int puncts = 0; QString str = "7 white, 3 red roses."; foreach(QChar s, str)
{
if (s.isDigit()) {
digits++;
} else if (s.isLetter()) {
letters++;
} else if (s.isSpace()) {
spaces++;
} else if (s.isPunct()) {
puncts++;
}
} out << QString("There are %1 characters").arg(str.count()) << endl;
out << QString("There are %1 letters").arg(letters) << endl;
out << QString("There are %1 digits").arg(digits) << endl;
out << QString("There are %1 spaces").arg(spaces) << endl;
out << QString("There are %1 punctuation characters").arg(puncts) << endl; return 0;
} Output
$ ./letters
There are 21 characters
There are 13 letters
There are 2 digits
There are 4 spaces
There are 2 punctuation characters
字符串修改
#include <QTextStream> int main(void)
{
QTextStream out(stdout); QString str = "Lovely";
str.append(" season"); out << str << endl; str.remove(10, 3);
out << str << endl; str.replace(7, 3, "girl");
out << str << endl; str.clear(); if (str.isEmpty()) {
out << "The string is empty" << endl;
} return 0;
}
Output
$ ./modify
Lovely season
Lovely sea
Lovely girl
The string is empty
Qt学习之路(2)------Qt中的字符串类的更多相关文章
- Qt 学习之路 :Qt Quick Controls
自 QML 第一次发布已经过去一年多的时间,但在企业应用领域,QML 一直没有能够占据一定地位.很大一部分原因是,QML 缺少一些在企业应用中亟需的组件,比如按钮.菜单等.虽然移动领域,这些组件已经变 ...
- Qt 学习之路 :Qt 绘制系统简介
Qt 的绘图系统允许使用相同的 API 在屏幕和其它打印设备上进行绘制.整个绘图系统基于QPainter,QPainterDevice和QPaintEngine三个类. QPainter用来执行绘制的 ...
- Qt 学习之路 :Qt 模块简介
Qt 5 与 Qt 4 最大的一个区别之一是底层架构有了修改.Qt 5 引入了模块化的概念,将众多功能细分到几个模块之中.Qt 4 也有模块的概念,但是是一种很粗的划分,而 Qt 5 则更加细化.本节 ...
- Qt学习之路MainWindow学习过程中的知识点
一.Qt的GUI程序有一个常用的顶层窗口,叫做MainWindow MainWindow继承自QMainWindow.QMainWindow窗口分成几个主要的区域: 二.QAction类 QAct ...
- Qt 学习之路:Qt 简介
Qt 是一个著名的 C++ 应用程序框架.你并不能说它只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI 组件.使用 Qt,在一定程度上你获得的是一个“一站式”的解决方案:不再需要研究 S ...
- Qt 学习之路 :Qt 线程相关类
希望上一章有关事件循环的内容还没有把你绕晕.本章将重新回到有关线程的相关内容上面来.在前面的章节我们了解了有关QThread类的简单使用.不过,Qt 提供的有关线程的类可不那么简单,否则的话我们也没必 ...
- QT学习之路--创建一个对话框
Q_OBJECT:这是一个宏,凡是定义信号槽的类都必须声明这个宏. 函数tr()全名是QObject::tr(),被他处理过的字符串可以使用工具提取出来翻译成其他语言,也就是做国际化使用. 对于QT学 ...
- Qt学习之路
Qt学习之路_14(简易音乐播放器) Qt学习之路_13(简易俄罗斯方块) Qt学习之路_12(简易数据管理系统) Qt学习之路_11(简易多文档编辑器) Qt学习之路_10(Qt ...
- Qt 学习之路 2(76):QML 和 QtQuick 2
Home / Qt 学习之路 2 / Qt 学习之路 2(76):QML 和 QtQuick 2 Qt 学习之路 2(76):QML 和 QtQuick 2 豆子 2013年12月18日 Qt ...
- Qt 学习之路 2(74):线程和 QObject
Home / Qt 学习之路 2 / Qt 学习之路 2(74):线程和 QObject Qt 学习之路 2(74):线程和 QObject 豆子 2013年12月3日 Qt 学习之路 2 2 ...
随机推荐
- java面试入门总结
最近正好有时间空下来,前一段时间本来打算呢,写一写阶段的总结,今天就来谈谈吧.作为一个java入门小白,之前就职于浙江大华,是通过大华10月份秋季招聘通过大华的面试. 浙江大华校招采用模式是先笔试.再 ...
- HDU 4706 Children's Day(简单模拟)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4706 题目大意:要用‘a’-‘z’ 26个小写字母输出倒着写得字母'N'的形状,例如 a ebdfc ...
- (转)Libevent(1)— 简介、编译、配置
转自:http://name5566.com/4190.html 参考文献列表:http://www.wangafu.net/~nickm/libevent-book/ 此文编写的时候,使用到的 Li ...
- 禁止 apache 开机启动
sudo update-rc.d apache2 disable http://askubuntu.com/questions/19320/what-is-the-recommended-way-to ...
- NetSerialComm的基本使用方法
近期搞一个com口传输的小项目,原来认为是一个挺简单的一个小功能,结果生产商发来com以后直接傻眼了,还要对相关的硬件流进行处理 如下 // 硬件流控制设置 dcb.fOutxCtsFlow = FA ...
- Java 单链表的倒置
在面试,笔试的过程中经常会遇到面试官问这种问题,实现单链表的倒置方法.现在对单链表的倒置犯法做个记录,方便自己以后查看. 单链表的定义: public class Node { int v; Node ...
- 普及下Oracle hints语法
普及下Oracle hints的语法:{DELETE|INSERT|SELECT|UPDATE} /*+ hint [text] [hint[text]]... */ 1.hint只能出现在诸如sel ...
- C# 网页自动填表自动登录(转)
自动填表的方式有很多,关键是获取控件的id或者name. 比如源代码有 <input id="pwdInput" tabindex="2" class=& ...
- Jsop入门程序
package com.baidu; import java.io.IOException; import org.jsoup.Jsoup;import org.jsoup.nodes.Documen ...
- Python join()方法
描述 Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. 语法 join()方法语法: str.join(sequence) 参数 sequence -- 要连接的 ...