c++11实现string format函数

xingyun86 1月前 143

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);
}


×
打赏作者
最新回复 (0)
只看楼主
全部楼主
返回