add strings::FormatArgs

This commit is contained in:
Nomango 2020-07-15 16:50:18 +08:00
parent e887f1655b
commit 83b8e9013d
2 changed files with 31 additions and 9 deletions

View File

@ -30,39 +30,53 @@ namespace strings
#if defined(KGE_PLATFORM_WINDOWS)
String Format(const char* format, ...)
{
va_list args = nullptr;
va_start(args, format);
String result = FormatArgs(format, args);
va_end(args);
return result;
}
WideString Format(const wchar_t* format, ...)
{
va_list args = nullptr;
va_start(args, format);
WideString result = FormatArgs(format, args);
va_end(args);
return result;
}
String FormatArgs(const char* format, va_list args)
{
String result;
if (format)
{
va_list args = nullptr;
va_start(args, format);
const auto len = static_cast<size_t>(::_vscprintf(format, args) + 1);
if (len)
{
result.resize(len - 1);
::_vsnprintf_s(&result[0], len, len, format, args);
}
va_end(args);
}
return result;
}
WideString Format(const wchar_t* format, ...)
WideString FormatArgs(const wchar_t* format, va_list args)
{
WideString result;
if (format)
{
va_list args = nullptr;
va_start(args, format);
const auto len = static_cast<size_t>(::_vscwprintf(format, args) + 1);
if (len)
{
result.resize(len - 1);
::_vsnwprintf_s(&result[0], len, len, format, args);
}
va_end(args);
}
return result;
}

View File

@ -50,6 +50,14 @@ String Format(const char* format, ...);
/// @brief ¸ñʽ»¯×Ö·û´®
WideString Format(const wchar_t* format, ...);
/// \~chinese
/// @brief ¸ñʽ»¯×Ö·û´®
String FormatArgs(const char* format, va_list args);
/// \~chinese
/// @brief ¸ñʽ»¯×Ö·û´®
WideString FormatArgs(const wchar_t* format, va_list args);
/// \~chinese
/// @brief ¿í×Ö·û´®×ªÕ­×Ö·û´®
String WideToNarrow(const WideString& str);