作者:溪龙2012_753 | 来源:互联网 | 2023-09-23 17:59
目录-概述-转换-函数和操作-截取字符串-判断是否以特定的子串开始或结束-字符填充-子串查找-插入字符与字符串-删除字符与字符串-替换字符与字符串概述C++实现了两种字符串:①C风
目录
|
- 概述
- 转换
- 函数和操作
- 截取字符串
- 判断是否以特定的子串开始或结束
- 字符填充
- 子串查找
- 插入字符与字符串
- 删除字符与字符串
- 替换字符与字符串
|
概述
C++实现了两种字符串:①C风格的字符串,以‘\0‘结尾;②std::string。Qt也实现了自己的字符串:与std::string相比,QString不用担心内存分配以及关于‘\0‘结尾的问题。
另外,与C风格的字符串不同,QString中间是可以包含‘\0‘符号的,而length()函数则会返回整个字符串的长度,而不仅仅是从开始到‘\0‘的长度。
转换
QString与std::string
|
QString?std::string
|
string str = qstr.toStdString();
|
|
std::string?QString
|
//使用static函数 QString qstr = QString::fromStdString(str);
|
|
|
QString与int
|
int?QString
|
//使用static函数 QString qstr = QString::number(123);
|
|
QString?int
|
//先转换成std::string,
//再用atoi(ascii_to_integer)把字符串转换成数字
int i = atoi(qstr.toStdString().c_str());
//亦可直接获得QString的ASCII码
int i = atoi(qstr.ascii());
|
|
|
函数和操作
QString::isNull()
|
判断:字符串是否存在(空串)
|
QString::isEmpty()
|
判断:字符串是否为空(空白串)
|
float a;
QString::number(a,‘f‘, 2);
|
- 保留2位有效数字,以简单方式表示,或者科学计数法表示
float a;
QString::number(a, ‘g‘, 2);
|
例如:
1.23,结果:1.2
0.00012,结果:1.2e-4
left()
|
left()函数从左侧截取n个字符
|
right()
|
right()函数从右侧截取n个字符
|
mid()
|
mid()函数接受两个参数,第一个是起始位置,第二个是子串的长度。如果省略第二个参数,则会从起始位置截取到末尾。
|
QString x = "Hello,World";
QString y = x.mid(6, 5);
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
H
|
e
|
l
|
l
|
o
|
,
|
W
|
o
|
r
|
l
|
d
|
结果:y = "World"
if (url.startsWith("http:") && url.endsWith(".png"))
{ }
//等价于
if (url.left(5) == "http:" && url.right(4) == ".png")
{ }
//前者比后者更加清晰,且性能更强。
|
QString::fill ( QChar ch, int size = -1 )
|
用字符ch填充整个字符串。
- 默认参数size = -1,字符串长度不变,均以ch填充。
- 当size ≠ -1,字符串长度变为size,以ch填充。
demo:
QString str = "Berlin";
str.fill(‘z‘);
// str == "zzzzzz"
str.fill(‘A‘, 2);
// str == "AA"
|
int QString::indexOf ( const QString & str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const
|
Qstring::indexOf (子串, 从第几个字符开始匹配)
|
查找失败返回-1。
QString x = "sticky question";
QString y = "sti";
x.indexOf(y); // returns 0
x.indexOf(y, 1); // returns 10
x.indexOf(y, 10); // returns 10
x.indexOf(y, 11); // returns -1
|
QString& QString::insert ( int position, const Char& ch )
|
QString& QString::insert ( int position, const QString& str )
|
QString& QString::remove ( int position, int n )
|
n = 1 时,删除第n个位置上的字符。
n > 1 时,删除从第position个位置起、长度为n的子串。
QString& QString::replace ( int position, int n, const QString & after )
|
将原串中从position个位置起、长度为n的子串替换为字符串after。
demo
QString x = "Say yes!";
QString y = "no";
x.replace(4, 3, y);
// x == "Say no!"
|
QString