在MFC中我们经常使用CString::Format()来格式化字符串!
在标准C++中可以使用std::ostringstream等类来处理,
但是写法复杂,格式化不方便,代码量大,可读性比较差
//格式化字符串
//格式化字符串
std::string Format(const char* fmt, ...)
{
va_list var_args;
va_start(var_args, fmt);
int size =_vscprintf(fmt,var_args;);
char* buffer = new char[size];
int nsize = _vsnprintf_s(buffer, size, fmt, var_args);
std::string ret(buffer);
va_end(var_args);
delete[] buffer;
return ret;
}
//格式化宽字符串
std::wstring Format(const wchar_t* fmt, ...)
{
va_list var_args;
va_start(var_args, fmt);
int size =_vscwprintf(fmt,var_args;);
wchar_t* buffer = new wchar_t[size];
int nsize = vswprintf(buffer, size, fmt, var_args);
std::wstring ret(buffer);
va_end(var_args);
delete[] buffer; return ret;
}
使用样例:
std::wstring str = Format(_T("点[%d]坐标:%g,%g,%g"), 1, X, Y, Z);