string拼接不管是书写还是易读性都比较差, 现模仿QString arg()的写法,实现简单的拼接,直接上代码
#include "stdafx.h"
#include <string>
#include <stdarg.h>
#include <iostream>
#include <vector>
using namespace std;
class qtString
{
public:
//str 待格式化字符
qtString(std::string str) {
mpQtString = this;
mCount = 0;
mString = str;
}
//返回格式化后的字符
std::string getStdString()
{
return mString;
}
//参数
qtString arg(std::string param) {
replace(param);
mpQtString->mCount++;
return *mpQtString;
}
//替换字符 根据qt里面的用%0 %1 ....代表需要替换的参数
//必须是由%0起始 可自行完善此缺陷
void replace(std::string param)
{
auto key = "%" + to_string(mpQtString->mCount);
auto index = mString.find(key);
if (index < 0) return;
auto temp = mString.substr(0, index);
temp += param;
mpQtString->mString = mString.replace(0, index+key.length(), temp);
}
public:
qtString* mpQtString;
std::string mString;
//%x 计数器 arg 调用一次 mCount加1
int mCount;
};
int main()
{
auto msg = qtString("insert into table tbl_user value('%0', '%1', '%2')").arg("测试").arg("男").arg("高1(3)班");
std::cout << msg.getStdString() << std::endl;
system("pause");
return 0;
}
结果输出:
此代码唯一缺陷原字符中必须有%0起始顺序累加,否者程序无法正常运作。