QString 的用法

  C++语言提供了两种字符串的实现:C风格的字符串,以'\0‘结尾;std::string,即标准模版库中的类。Qt则提供了自己的字符串实现:QString,QString不用担心内存分配以及关于'\0'结尾的这些注意事项

  另外,与C风格的字符串不同,QString中间是可以包含'\0'符号的,而length()函数则会返回整个字符串的长度,而不仅仅是从开始到'\0'的长度。同Java的String类类似,QString也重载的+和+=运算符。

  这两个运算符可以把两个字符串连接到一起,QString可以自动的对占用内存空间进行扩充,这种连接操作是很迅速的

  示例:

1  QString str = "User: ";
2     str += userName + "\n";

  QString的append()函数则提供了类似的操作,例如:

1 str = "User: "; 
2 str.append(userName); 
3 str.append("\n");

  使用static的函数number()可以把数字转换成字符串。例如:

 1 QString str = QString::number(54.3); 

  你也可以使用非static函数setNum()来实现相同的目的:

 1 QString str; str.setNum(54.3); 

   而一系列的to函数则可以将字符串转换成其他基本类型,例如toInt(), toDouble(), toLong()等。这些函数都接受一个bool指针作为参数,函数结束之后将根据是否转换成功设置为true或者false:

1 bool ok; double d = str.toDouble(&ok); 
2 if(ok) { // do something... }
3  else { // do something... }

  对于QString,Qt提供了很多操作函数,例如,使用mid()函数截取子串:

1 QString x = "Nine pineapples"; 
2 QString y = x.mid(5, 4);
3  // y == "pine" QString z = x.mid(5); /
4 / z == "pineapples"

  mid()函数接受两个参数,第一个是起始位置,第二个是取串的长度。如果省略第二个参数,则会从起始位置截取到末尾。正如上面的例子显示的那样。

  函数left()和rigt()类似,都接受一个int类型的参数n,都是对字符串进行截取。不同之处在于,left()函数从左侧截取n个字符,而right()从右侧开始截取。下面是left()的例子:

1 QString x = "Pineapple"; 
2 QString y = x.left(4); 
3 // y == "Pine"

  函数startsWith()和endsWith()可以检测字符串是不是以某个特定的串开始或结尾,例如:

 1  if (url.startsWith("http:") && url.endsWith(".png")) { } 

  这段代码等价于

1  if (url.left(5) == "http:" && url.right(4) == ".png") { }

  只不过前者要比后者更加清楚简洁,并且性能也更快.

  QString还提供了replace()函数供实现字符串的替换功能;trimmed()函数去除字符串两侧的空白字符(注意,空白字符包括空格、Tab以及换行符,而不仅仅是空格);toLower()和toUpper()函数会将字符串转换成小写大写字符串;

  remove()和insert()函数提供了删除和插入字符串的能力;simplified()函数可以将串中的所有连续的空白字符替换成一个,并且把两端的空白字符去除,例如" \t ”会返回一个空格" "。

  将const char *类型的C风格字符串转换成QString也是很常见的需求,简单来说,QString的+=即可完成这个功能:  

 1 str += " (1870)"; 

  这里,我们将const char * 类型的字符串" (1870)"转换成为QString类型。  

  判断字符串是否为空

 1 bool QString::isEmpty () const 

如:
1 QString().isEmpty();            // returns true
2 QString("").isEmpty();          // returns true
3 QString("x").isEmpty();         // returns false
4 QString("abc").isEmpty();       // returns false

判断字符串是否存在

 1 bool QString::isNull () const 

  如:
1 QString().isNull();             // returns true
2 QString("").isNull();           // returns false
3 QString("abc").isNull();        // returns false

  使某个字符填满字符串,也就是说字符串里的所有字符都有等长度的ch来代替。

QString::fill ( QChar ch, int size = -1 )

  如:

复制代码

     QString str = "Berlin";
     str.fill('z');
     // str == "zzzzzz"

     str.fill('A', 2);
     // str == "AA"

复制代码

  从字符串里查找相同的某个字符串str。

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

  如:

复制代码

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 QString & str )

  如:

     QString str = "Meal";
     str.insert(1, QString("ontr"));
     // str == "Montreal"

  删除字符串中间某个字符。

QString & QString::remove ( int position, int n )

  如:

     QString s = "Montreal";
     s.remove(1, 4);
     // s == "Meal"

  替换字符串中的某些字符。

QString & QString::replace ( int position, int n, const QString & after )

  如:

     QString x = "Say yes!";
     QString y = "no";
     x.replace(4, 3, y);
     // x == "Say no!"

学习无他法,唯有持之以恒

 

此文章源自于【https://www.cnblogs.com/qianqiannian/p/6415329.html

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QStringList是Qt中用来存储字符串列表的类,可以通过以下方式来使用: 1. 定义和初始化QStringList ```cpp QStringList myStringList; myStringList << "Apple" << "Banana" << "Orange"; ``` 2. 添加和删除元素 向QStringList中添加元素可以使用`<<`运算符或者`append()`方法,删除元素可以使用`removeAt()`或者`removeOne()`方法。 ```cpp myStringList << "Grape"; // 使用<<运算符添加元素 myStringList.append("Pineapple"); // 使用append()方法添加元素 myStringList.removeAt(2); // 删除索引为2的元素 myStringList.removeOne("Apple"); // 删除第一个出现的"Apple"元素 ``` 3. 获取元素 可以使用`at()`方法或者`[]`运算符来获取指定索引处的元素,也可以使用`contains()`方法来检查字符串是否在列表中。 ```cpp QString fruit = myStringList.at(1); // 获取索引为1的元素 QString fruit = myStringList[1]; // 也可以使用[]运算符获取元素 bool hasBanana = myStringList.contains("Banana"); // 检查列表中是否包含"Banana" ``` 4. 清空和检查大小 可以使用`clear()`方法来清空整个列表,`isEmpty()`方法来检查列表是否为空,`size()`方法来获取列表大小。 ```cpp myStringList.clear(); // 清空整个列表 bool isEmpty = myStringList.isEmpty(); // 检查列表是否为空 int size = myStringList.size(); // 获取列表大小 ``` 5. 遍历列表 可以使用`foreach`循环或者`for`循环来遍历列表中的元素。 ```cpp foreach(QString fruit, myStringList) { qDebug() << fruit; } for(int i=0; i<myStringList.size(); i++) { qDebug() << myStringList[i]; } ``` 以上是QStringList的一些基本使用方法,您可以根据具体需求选择适合的方法来操作字符串列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值