QString 用法

news/2025/2/14 8:28:45/

left

filename.left(n);取filename左边size - n长度的数据;

QString filename;

//“movie.png”

filename=filename.left(filename.size() -4);

//“movie”

chop

filename.chop(n);从字符串filename尾部删除 n 个字符

QString filename;

//“movie.png”

filename.chop(4);

//“movie”

replace

filename.replace(n,m,str);用str替换从位置 n开始长度为m的字符,

QString filename;

//“movie.png”

filename.replace(filename.size()-4,4,"");

//“movie”

resize

filename.resize(n);改变字符串长度为n

QString filename;

//“movie.png”

filename.resize(filename.size()-4);

//“movie”

truncate

filename.truncate(n);从位置 n 处截取字符串

QString filename;

//“movie.png”

filename.truncate(filename.size()-4);

//“movie”

remove

filename.remove(n, m);从位置 n 处开始删除 m 个字符

QString filename;

//“movie.png”

filename.remove(filename.size()-4,4);

获取字符串某位置的值。

Mid

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

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

indexOf()  获取字符在字符中的位置。
    
   //
存在lastIndexOf()函数,返回字符串的最后一次出现的索引?  
   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

startsWith()    endsWith()

可以检测字符串是不是以某个特定的串开始或结尾。
   


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

    这段代码等价于

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


trimmed()

函数去除字符串两侧的空白字符(注意,空白字符包括空格、Tab以及换行符,而不仅仅是空格);


toLower()和toUpper()

函数会将字符串转换成小写大写字符串;

simplified()

函数可以将串中的所有连续的空白字符替换成一个,并且把两端的空白字符去除,

例如"\t"  会返回一个空格" "。

 

const char *类型的C风格字符串与QString字符之间的转换。

    

简单来说,QString的+=即可完成这个功能:
     str += " (1870)";

这里,我们将const char * 类型的字符串" (1870)"转换成为QString类型。如果需要显式的转换,可以使用QString的强制转换操作,或者是使用函数fromAscii()等。为了将QString类型转成const char *字符串,需要进行两步操作,一是使用toAscii()获得一个QByteArray类型对象, 然后调用它的data()或者constData()函数,

          printf("User: %s\n", str.toAscii().data());

为了方便使用,Qt提供了一个宏qPrintable(),这个宏等价于 toAscii().constData(),例如:

           printf("User: %s\n", qPrintable(str)); 

我们调用QByteArray类上面的data()或者constData()函数,将获得QByteArray 内部的一个const char*类型的字符串,   因此,我们不需要担心内存泄漏等的问题,Qt会替我们管理好内存。不过这也暗示我们,注意不要使用这个指针太长时间,   因为如果 QByteArray被delete,那么这个指针也就成为野指针了。如果这个QByteArray对象没有被放在一个变量中,   那么当语句结束后,QbyteArray对象就会被delete,这个指针也就被delete 了。

字符串与其它类型的转换函数


  toInt()     转整型
  toDouble()  转双精度型
  toLong()    转长整型
  这些函数都接受一个bool指针作为参数,函数结束之后将根据是否转换成功设置为true或者false:

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


整型转字符串型:
  1、使用static的函数number()可以把数字转换成字符串。例如:
     QString str = QString::number(54.3); 
  2、也可以使用非static函数setNum()来实现相同的目的:
     QString str;  
     str.setNum(54.3);


    

QString则提供了一个sprintf()函数实现了与C语言中的printf函数相同的功能
    
 1. str.sprintf("%s %.1f%%", "perfect competition", 100.0); 
   这句代码将输出:perfect competition 100.0%
       
  2、另一种格式化字符串输出的函数arg():
 
 str = QString("%1 %2 (%3s-%4s)").arg("permissive").arg("society").arg(1950).arg(1970);

    QString str;

    str ="%1 %2";

    str.arg("%1f","Hello");       // returns "%1f Hello"

    str.arg("%1f").arg("Hello");   // returns "Hellof %2

  这段代码中,%1, %2, %3, %4作为占位符,将被后面的arg()函数中的内容依次替换,比如%1将被替换成permissive,%2将被替换成society,%3将被替换成 1950,%4将被替换曾1970,最后,这句代码输出为:permissive society (1950s-1970s). arg()函数比起sprintf()来是类型安全的,同时它也接受多种的数据类型作为参数,因此建议使用arg()函数而不是传统的 sprintf()。

如何正确显示中文字符

如果使QT根据Locale的环境变量取得字符集

使用QString的fromLocal8Bit()函数;
QString str;
str = str.fromLocal8Bit("哈哈哈");


http://www.ppmy.cn/news/103393.html

相关文章

【JavaSE】Java基础语法(三十三):File 一文详解

文章目录 1. File类概述和构造方法2. 绝对路径和相对路径3. File类创建功能【应用】4. File类删除功能【应用】5. File类判断和获取功能【应用】6. 6File类练习一【应用】7. File类练习二【应用】 1. File类概述和构造方法 File类介绍 它是文件和目录路径名的抽象表示文件和目录…

快速求质因子

快速求质因子 利用线性筛法求解质因子。小技巧:时间复杂度分析 题目传送门 首先明确,1不是质数,故质因子中不包含1。 利用线性筛法求解质因子。 bool isPrime[100005] {0}; int prime[100005] {0}; int lpf[100005] {0}; int tot 0; int…

【AGC】云监控日志服务查询不到Logger日志相关问题

【关键字】 AGC、云监控、日志服务 【问题描述】 开发者反馈在使用AGC云监控,填写了Logger日志,但是在云监控的日志服务查不到的问题。具体如下所述: 云函数按要求写了Logger日志,但是在云监控的日志服务页面查询不到&#xff…

【Vue】笔记一:vue技术栈详解

vue技术栈详解 1. Vue框架2. Vue Router3. Vuex4. Axios5. Element UI6. Nuxt.js7. TypeScript Vue技术栈主要包含Vue框架本身以及一些常用的Vue生态技术,下面一一进行介绍。 1. Vue框架 Vue框架是构建用户界面和单页面应用程序的核心框架,主要提供以下…

Linux:CentOS:进程查看和控制

查看 ps 查看静态的进程统计信息top查看动态的进程排名信息pgrep根据特定条件查询进程 PID 信息pstree以树形结构列出进程信息 S ---休眠 R ---运行 Z ---僵死&#xff08;应予以手动终止&#xff09; < ---高优先级 N ---低优先级 …

智慧物流货运系统源码,网络货运平台系统源码,货运系统开发源码部署

一套结合货主、平台、实际承运人多方业务场景&#xff0c;构建人、车、货、企一体的标准化网络货运平台系统源码。 文末获取联系 平台服务于货主与司机&#xff0c;进行服务对接&#xff0c;为货主节省时间找车&#xff0c;为司机找货获得利润。 货主端&#xff1a;货车主在线发…

【网络协议详解】——电子邮件系统协议(学习笔记)

目录 &#x1f552; 1. 电子邮件系统概述&#x1f552; 2. 简单邮件传送协议SMTP&#x1f552; 3. SMTP协议的命令和响应&#x1f558; 3.1 命令&#x1f564; 3.1.1 HELO&#x1f564; 3.1.2 MAIL FROM&#x1f564; 3.1.3 RCPT TO&#x1f564; 3.1.4 DATA&#x1f564; 3.1.…

客服配置-shopro

客服配置 注意事项 shopro客服系统 采用 workerman 的 gateway-worker 作为服务基础&#xff0c;请先安装 gateway-worker 扩展包shopro商城 已不再支持 workerman 在线客服插件 安装部署 安装扩展包 composer require workerman/gateway-worker:~3.0 删除禁用函数(如有未列…