QString类arg方法扩展二

之前写了一篇关于扩展arg方法的文章,后来使用期间,发现有2个问题:

1.第一个入参不能是数字

2.入参个数过多时,会出现溢出问题

多以针对这两个问题,重新优化了一下,这次算是完美了,哈哈哈

#ifndef QSTRINGEX_HPP
#define QSTRINGEX_HPP
 
 
#include <QString>
 
class QStringEx : public QString
{
public:
    QStringEx(const QString &strFormate): QString(strFormate){}
 
    QStringEx(){}
 
    template<typename ...Args>
    QStringEx& stringArg(Args... args)
    {
        int nCount = sizeof...(Args);
		QStringExcArgs[] = { (0, getArg(args))... };

		for (int i = nCount -1; i >= 0; --i)
		{
			stringReplace(i + 1, cArgs[i]);
		}

		return *this;
    }
 
private:
    template<typename Arg>
	QStringEx getArg(Arg arg)
	{
		return QString("%1").arg(arg);
	}
 
    template<typename T>
    QStringEx& stringReplace(int nNumber, T arg)
    {
        QString strNumber = QString("%%1").arg(nNumber);
        int index = this->indexOf(strNumber);
        if (index != -1)
        {
            this->replace(index, strNumber.length(), QString("%1").arg(arg));
        }
        return *this;
    }
 
 
};
#endif //QSTRINGEX_H

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值