Advertisement

【Qt】QString的arg存在的坑【2024年9月26日】

阅读量:

一、摘要

源于SwiftString的arg方法使用不当造成了一个bug。该接口让用户在输入时使用了%0、%1这样的占位符符号。

二、代码示意

复制代码
    QString strMsg("%1-%2");
    strMsg.arg("C:/Windows/%1Dir/a.txt").arg("66");
    
    
    AI写代码cpp

预期的strMsg

复制代码
    C:/Windows/%1Dir/a.txt"-66
    
    
    AI写代码cpp

实际的strMsg

复制代码
    C:/Windows/66Dir/a.txt"-%2
    
    
    AI写代码cpp

三、原理分析

.arg 是链式调用,QString是运算符重载了".",且返回是QString &

第一次arg之后,strMsg=C:/Windows/%1Dir/a.txt"-%2

第二次的arg会从左开始找占位符,又找到”%1“,然后拿”66“替换”%1“

四、总结

QString的arg用法很方便,但是有雷,需谨防能输入占位符%1-99的情况。

全部评论 (0)

还没有任何评论哟~