QString

Posted audacious

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QString相关的知识,希望对你有一定的参考价值。

目录

    - 概述

    - 转换

    - 函数和操作

        - 截取字符串

        - 判断是否以特定的子串开始或结束

        - 字符填充

        - 子串查找

        - 插入字符与字符串

        - 删除字符与字符串

        - 替换字符与字符串

  

概述

C++实现了两种字符串:①C风格的字符串,以结尾;②std::string。Qt也实现了自己的字符串:与std::string相比,QString不用担心内存分配以及关于‘‘结尾的问题。

另外,与C风格的字符串不同,QString中间是可以包含‘‘符号的,而length()函数则会返回整个字符串的长度,而不仅仅是从开始到‘‘的长度。

   

转换

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

//再用atoiascii_to_integer)把字符串转换成数字

int i = atoi(qstr.toStdString().c_str());

   

//亦可直接获得QStringASCII

int i = atoi(qstr.ascii());

   

函数和操作

QString::isNull()

判断:字符串是否存在(空串)

QString::isEmpty()

判断:字符串是否为空(空白串)

   

  • 浮点数转换
    • 保留2位小数

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"

   

  • 判断是否以特定的子串开始或结束

    函数startsWith()和endsWith()可以检测字符串是否以某个特定的子串开始或结尾。

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的主要内容,如果未能解决你的问题,请参考以下文章

QT进制之间的相互转换