之前写了一篇关于扩展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