qstring arg()使用

QtCreator调试时无法显示std::string的内容 阅读详情

实验:

QString i = "iTest";           // current file's number  

QString total = "totalTest";       // number of files to process  
QString fileName = "fileNameTest";    // current file's name   
QString status = QString("Processing file %1 of %2: %3")  
              .arg(i).arg(total).arg(fileName);  

std::cout<<status.toStdString()<<std::endl;

输出结果:


具体讲解:

在QT的QString中,arg方法类似于C中的printf中使用的格式输出符(只是有点类似)。 
在QT5的帮助文档中,可以看出以下几点: 
使用arg(str1, str2, str3)这种方法进行替换。 
使用arg(str1).arg(str2).arg(str3)这种方法进行替换。 
使用arg(int, int, int)这种方式进行替换。 
解释以下两种方法: 
一:使用arg(str1, str2, str3) 
这种方法要求str1、str2、str3都为const QString &类型,即: 

QString QString::arg(constQString & a1,constQString & a2,constQString & a3)const
同时,arg( )里的参数实现从1个到9个,也就是说最多只能有9个!即在实现中,arg的定义中参数最多的为: 
QString QString::arg(constQString & a1,constQString & a2,constQString & a3,constQString & a4,constQString & a5,constQString & a6,constQString & a7,constQString & a8,constQString & a9)const 
这也就意味着,如果有如下代码: 
QString str = QString("%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11").
            arg("1","2","3","4","5","6","7","8","9")
str将只会输出: 
"1 2 3 4 5 6 7 8 9 %10 %11" 
解决方法为在后面再加一个arg方法,放上后面两个对应的参数: 
QString str = QString("%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11").
            arg("1","2","3","4","w","6","7","8","9").arg("a","b");
//输出为: 
// "1 2 3 4 5 6 7 8 9 a b" 
注意:在QT5帮助文档中,给出了如下代码: 
QString str;
str ="%1 %2";
str.arg("%1f","Hello");       // returns "%1f Hello"
str.arg("%1f").arg("Hello");   // returns "Hellof %2"
如果你copy这个代码去测试一下,会发现,输出结果还是:"%1 %2" 。根本没有其给出的结果。(没找到源码,有谁知道怎么查看QT的源码,求帮助!说找src文件夹的就不要来了,根本木有) 
所以在使用的时候一定要注意一下。要紧跟字符串使用arg( ) 。 
二.使用arg(str1).arg(str2).arg(str3) 
这种方法其实前面用到了,如下面例子: 
QString str=QString("%1 %2 %3 %4").arg("A").arg("B").arg("C").arg("D");
//str=="A B C D"
简单说就是挨着替换呗。但请注意下面的形式: 
str = QString("%1 %2").arg("%1World","Hello"); 
qDebug()<<str; 
//输出为:"%1World Hello" 
str = QString("%1 %2").arg("%1World").arg("Hello"); 
qDebug()<<str; 
//输出为:"HelloWorld %2" 
//第一个arg执行完后变为:QString("%1World %2").arg("Hello") 
//再次执行后"Hello"替换的为%1 
所以在使用多个arg( )连接时,一定要注意,前面连接使用的arg( )里如果有“%+数字”的情况,后面的arg( )会同样替换! 
请注意下列例子: 
str = QString("%1 %2").arg("%1World").arg("Hello");
//输出:"HelloWorld %2"
str = QString("%1 %2").arg("%2World").arg("Hello");
//输出:"HelloWorld Hello"
str = QString("%1 %2").arg("%3World").arg("Hello");
//输出:"%3World Hello"
str = QString("%1 %2").arg("%8World").arg("Hello");
//输出:"%8World Hello"
str = QString("%1 %6").arg("%3World").arg("Hello");
//输出:"HelloWorld %6"
str = QString("%2 %6").arg("%3World").arg("Hello");
//输出:"HelloWorld %6"
str = QString("%0 %6").arg("%3World").arg("Hello");
//输出:"HelloWorld %6"
str = QString("%-1 %6").arg("%3World").arg("Hello");
//输出:"%-1 HelloWorld"

arg( )里的参数在进行替换时,只会按照数字从小到大的顺序进行替换,只有比当前数字小的所有数字都替换完成了,才会替换当前数字,否则将当前数字和%按字符串处理。且数字为自然数! 
三. 使用arg(int, int, int) 
原型【1】为: 
QString QString::arg(inta,intfieldWidth = 0,intbase = 10, QChar fillChar = QLatin1Char(' '))const 
a:表示要处理的数字;fieldWidth:字宽;base:数字基数 
如下列: 
str = QString("十进制 63 的十进制为 %1") 
            .arg(63,0,10); 
//输出:"十进制 63 的十进制为 63" 
str = QString("十进制 63 的十六进制为 %1") 
            .arg(63,0,16); 
//输出:"十进制 63 的十六进制为 3f" 
str = QString("%1 %L2 %L3") 
            .arg(12345) 
            .arg(1987654321) //根据结果,可知道这个L的作用 
            .arg(12345,0,8);//但使用这种方式时,L失效 
//输出为:12345 1,987,654,321 30071 
//这里%L3的L没有任何作用 
在原型【1】中的a的类型还可以是uint、long、double、udouble等数字的类型! 
这里当a的类型为double时,原型为: 
QString QString::arg(doublea,intfieldWidth = 0,charformat ='g',intprecision = -1, QChar fillChar = QLatin1Char(' '))const 
多了两个参数:format和precision,一个指明规格,一个指明精度。规格默认为 'g' 或 'G',指示后面的精度为整数和小数部分总和的长度;规格为'e'或 'E' 时,表示为科学记数法形式,精度部分指示的为小数部分的位数长度;规格为其他字符时,无作用,输出原double数字。如: 
doubled = 12.345689;
str = QString("delta: %1").arg(d, 0,'g',4);
//输出为:"delta: 12.35"     ---这里进行了四舍五入
str = QString("delta: %1").arg(d, 0,'G',5);
//输出为:"delta: 12.346"     ---这里进行了四舍五入
str = QString("delta: %1").arg(d, 0,'e',4);
//输出为:"delta: 1.234e+01"
str = QString("delta: %1").arg(d, 0,'E',4);
//输出为:"delta: 1.234E+01"
str = QString("delta: %1").arg(d, 0,'r',4);
//输出为:"delta: 12.345689"
str = QString("delta: %1").arg(d, 0,'Q',4);
//输出为:"delta: 12.345689"


Qt:QString 中的 arg 函数用法 1、Qstring QString::arg() 用字符串变量一次替换字符串中最小数值 QString i = "a"; // current file's number QString total = "10"; // number of files to process QString fileName = "unkown"; // current file's name QString status = QString(" 阅读详情

相关推荐

优化Qt性能:如何高效使用QString::arg()避免[clazy-qstring-arg]警告

本文深入解析了Qt开发中常见的[clazy-qstring-arg]性能警告,揭示了连续调用QString::arg()会创建多个临时字符串对象,导致内存和CPU开销。文章重点介绍了高效解决方案:使用QString::arg()的多参数版本进行一次性替换,可显著提升程序性能,尤其在循环和频繁调用场景下效果显著,并提供了实战重构步骤与最佳实践。

weixin_29235525的博客 437

VS2010+QT5编程之QString与char*的相互转换

在使用QT5+vs2010编程中,QString与char*的相互转换并不是那么简单,当QString或者char*包含中文时,适用于QT4的转换方法在QT5中转换出来很可能就是乱码。 QString转char*: QString qstr = "中国山东济南"; std::string str = qstr.toStdString(); const char* ch = str.c_str(

godmaycry的专栏 1610

【Qt】QString 转换 string 示例演示

如果QString包含非ASCII字符或Unicode字符,建议使用.toUtf8().constData()方法,以确保字符的正确转换。如果在C++11或更高版本中编写代码,建议使用方法1 (.toStdString()),因为它提供了更简洁的语法。要将QString转换为std::string,可以使用.toStdString()或.toUtf8().constData()方法。请记住,在将QString转换为std::string时,需要确保目标std::string的编码方式适用于应用程序的需求。

Fanjufei的博客 897

QString和std::string 之间转换

在Qt/C++中,QString和之间的转换需要特别注意编码问题,因为它们使用不同的字符编码。

qq_39623515的博客 2332

Qt 中 QString::toStdString转std::string崩溃

使用 std::string str = std::string((const char *)msg.toLocal8Bit());从websocket接收QString值,直接用QString::toStdString转成std::string会导致程序崩溃,如下图。

shengyin714959的博客 1532

Fluent实战——残差震荡分析与收敛优化策略

本文深入探讨了Fluent仿真中残差震荡的成因与优化策略。残差震荡是流场物理或数值问题的关键信号,文章系统分析了网格质量、边界条件、物理模型非定常性及求解设置四大主因,并提供了库朗数与松弛因子的调参心法,以及针对超音速流、共轭传热等典型场景的实战优化方案,旨在帮助用户有效提升计算收敛性与结果可靠性。

w1x2y3的博客 311

QString.arg()用法

在QT的QString中,arg方法类似于C中的printf中使用的格式输出符(只是有点类似)。 在QT5的帮助文档中,可以看出以下几点: 使用arg(str1, str2, str3)这种方法进行替换。 使用arg(str1).arg(str2).arg(str3)这种方法进行替换。 ​使用arg(int, int, int)这种方式进行替换。 解释以下两种方...

qq_42908110的博客 1万+

OpenBmc开发11:添加传感器(I2C)

1 查看传感器信息 通过qemu以本地端口映射方式运行编译后的镜像,访问bmcweb页面的网址是:https://localhost:2443/,如果想用IP地址启动请参考:openbmc开发4:启动运行编译镜像。(这里以网桥方式启动,以ip地址方式访问BMC) 输入用户名和密码,密码是:0penBmc(第一个是数字)。 选择Health,然后点击Sensor,可以看到传感器信息。 2 查看传感器配置文件 进入meta-live/meta-test/recipes-phosphor/...

master 1万+

QString中的arg()用法

QString QString::arg(const QString &a, int fieldWidth = 0, QChar fillChar = QLatin1Char( ' ' )) const 上面为arg()的函数原型。 注意:用于填充字符串中的%1,%2...为给定的参数。其中取代的为%1,%2,...,%99.注意最小为%1最大为%99。 使用arg(str1).a...

Rock N' Roll Forever 4593

具身智能落地实战:制造业、物流与电力的工业级方案设计

具身智能是一种融合感知、推理与物理执行的智能范式,其核心在于构建具备因果建模能力、多模态闭环反馈和实时动作规划的行动主体。区别于通用AI或传统自动化,它依托多模态大模型、高精度力觉/触觉传感及Sim2Real仿真技术,实现对真实物理环境的深度理解与自适应交互。技术价值体现在可解释性决策、毫秒级跨模态协同与零停机容错能力,已规模化应用于制造业质检、物流破损鉴定、电力绝缘子巡检等强约束工业场景。本文聚焦‘行业应用方案解决方案’这一高频搜索需求,系统拆解从工位筛选、分层架构设计到72小时现场交付的全链路工程方法论

weixin_30952479的博客 293

PSIM仿真实战:反激电源从设计到调试的完整流程(附短路保护配置)

本文详细介绍了使用PSIM仿真工具进行反激电源从设计到调试的完整流程,包括变压器参数设计、功率器件选型、动态特性调试以及短路保护配置。通过实战案例和仿真技巧,帮助工程师提前暴露并解决设计中的常见问题,如负载突变、输入电压波动和短路保护失效等,显著降低硬件试错成本。

weixin_29216353的博客 238

Qt中QString的arg()函数使用记录

Qt中QString的arg()函数使用记录 QString::arg()//是用字符串变量参数依次替代字符串中最小数值 大致有如下3种用法: (1)arg(str1, str2, str3) 其中一次可替换参数个数最多为9个,举例如下 QString str = QString("%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11") .arg("1","2","3","4","5","6","7","8","9") 输出为"1 2 3 4 5 6 7 8 9 %10 %11" 要想

qq_42755842的博客 3660

解密 vn.py 源码:从事件驱动到模块化设计的实战解析

本文深入解析vn.py源码,重点剖析其事件驱动机制与模块化设计。通过事件引擎、处理器字典等核心组件分析,展示如何实现低耦合高内聚的交易系统架构,并结合实战案例说明模块化设计带来的开发效率提升。文章还详细解读了Gateway抽象层、核心数据结构及设计模式应用,为量化交易开发者提供源码级实践指南。

weixin_27427619的博客 245

Qt QString的arg()方法的使用

QString的arg()方法用于填充字符串中的%1,%2...为给定的参数,如 QString m = tr("%1:%2:%3").arg("12").arg("60").arg("60"); // m = "12:60:60: 它还有另外一种重载方法: QString QString::​arg(int a, int fieldWidth = 0, int base = 10,

修锅换壶底 3万+

OceanBase容量统计:租户、数据库、表大小

🍎 数据库版本:OceanBase V4。

Sebastien23的博客 1380

在zcu102开发板上使用PetaLinux运行Qt程序

请注意,上述步骤只是一个概述,并且可能需要根据特定的开发环境和要求进行适当的调整。如果你是一个初学者或者对于这些领域不太熟悉,建议在尝试之前阅读相关的文档和教程,或者寻求专业人士的帮助。在"Projects"菜单中,选择"Build & Run"选项,并在"Build"步骤中选择正确的工具链。注意:如果Qt程序依赖于其他库文件,需要将这些库文件一起复制到PetaLinux工程的根文件系统目录中,并在Qt程序中正确地配置库文件路径。如果一切顺利,PetaLinux系统将启动,并自动运行Qt程序。

UhxzCombined的博客 695

QString之arg

QString的arg接口主要用于字符串组合的功能。

Qt君 1237

HTML粉色爱心(完整代码)

HTML语言实现粉色爱心的完整代码。

AIGC 1093

Qt 字符串QString arg()用法总结

1、QString::arg()//用字符串变量参数依次替代字符串中最小数值       Cpp代码  QString i = "iTest";           // current file's number   QString total = "totalTest";       // number of files to process

smb1987cs的专栏 7808

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Qt QString的arg()方法的使用

Qt QString的arg()方法的使用,英文太差了,帮助文档没看懂,百度一下,有需要的朋友可以参考下。(下面两种方法是比较常用的)1、QString的arg()方法用于填充字符串中的%1,%2...为给定的参数,如QString m = tr("%1:%2:%3").arg("12").arg("60").arg("60"); // m = "12:60:60:2、它还有另外一种重载方法...

zxl_1996的博客 5057

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

QString的arg()方法的重载

QString QString::​arg(int a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char( ’ ’ )) const This function overloads arg(). The a argument is expressed in base base, which is 10 by defau...

sunximei的博客 580

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

QT QString的arg方法

在QT的QString中,arg方法类似于C中的printf中使用的格式输出符(只是有点类似)。 在QT5的帮助文档中,可以看出以下几点: 使用arg(str1, str2, str3)这种方法进行替换。 使用arg(str1).arg(str2).arg(str3)这种方法进行替换。 ​使用arg(int,int,int)这种方式进行替换。 解释以下两种方法:...

qq_27278957的博客 1078

深入分析 QString::arg 的用法及其应用

在 Qt 框架中,`QString` 类是处理字符串的基本工具,提供了非常丰富的功能。`QString::arg()` 方法是 `QString` 类中一个非常实用的功能,它允许开发者在字符串中插入变量值,类似于格式化字符串。本文将深入分析 `QString::arg()` 方法的用法及其在 Qt 应用程序开发中的应用。

dont worry about it的博客 1万+

QString类arg方法扩展

在使用QString的arg方法时,是一件很方便的事情,例如: QString("%1,2%").arg("10").arg("20") //10,20 但是如果是下面的场景,对于这样场景我们期望得到的结果是:%2,20。 QString("%1,%2").arg("%2").arg("20") //20,20 实际中肯定不会这么简单啦,因为arg()方法的参数在运行期间有可能是任何值,...

HFUTWXY的博客 1728

QT学习之QString的arg方法

在QT的QString中,arg方法类似于C中的printf中使用的格式输出符(只是有点类似)。 在QT5的帮助文档中,可以看出以下几点: 使用arg(str1, str2, str3)这种方法进行替换。 使用arg(str1).arg(str2).arg(str3)这种方法进行替换。 ​使用arg(int,int,int)这种方式进行替换。 解释以下...

weixin_30847271的博客 1878

QT之QString的arg方法

转载。标记一下,总结的很好 转自http://www.cnblogs.com/lomper/p/4135387.html 在QT的QString中,arg方法类似于C中的printf中使用的格式输出符(只是有点类似)。 在QT5的帮助文档中,可以看出以下几点: 使用arg(str1, str2, str3)这种方法进行替换。 使用arg(str1).arg(s...

dingbianping4275的博客 296
上一篇: osg三维重建的两种方法剖析:三角面片(osgUtil::DelaunayTriangulator)和四角面片(osg::HeightField)
下一篇: Qt获取当前时间
hudfang
博客等级 码龄16年 182粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值