c++11实现string format函数
#include <memory>
template<typename ... Args>
__inline static std::string string_format(const std::string& format, Args ... args)
{
auto size_buf = std::snprintf(nullptr, 0, format.c_str(), args ...) + 1;
std::unique_ptr<char[]> buf(new(std::nothrow) char[size_buf]);
if (!buf)
return std::string("");
std::snprintf(buf.get(), size_buf, format.c_str(), args ...);
return std::string(buf.get(), buf.get() + size_buf - 1);
}
template<typename ... Args>
__inline static std::wstring wstring_format(const std::wstring& format, Args ... args)
{
auto size_buf = ::_snwprintf(nullptr, 0, format.c_str(), args ...) + 1;
std::unique_ptr<wchar_t[]> buf(new(std::nothrow) wchar_t[size_buf]);
if (!buf)
return std::wstring(L"");
::_snwprintf(buf.get(), size_buf, format.c_str(), args ...);
return std::wstring(buf.get(), buf.get() + size_buf - 1);
}