From 83b8e9013d96924a660c4ffd54317d617a87b46f Mon Sep 17 00:00:00 2001 From: Nomango Date: Wed, 15 Jul 2020 16:50:18 +0800 Subject: [PATCH] add strings::FormatArgs --- src/kiwano/core/String.cpp | 32 +++++++++++++++++++++++--------- src/kiwano/core/String.h | 8 ++++++++ 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/kiwano/core/String.cpp b/src/kiwano/core/String.cpp index aaeef7f6..f416bdc0 100644 --- a/src/kiwano/core/String.cpp +++ b/src/kiwano/core/String.cpp @@ -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(::_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(::_vscwprintf(format, args) + 1); if (len) { result.resize(len - 1); ::_vsnwprintf_s(&result[0], len, len, format, args); } - va_end(args); } return result; } diff --git a/src/kiwano/core/String.h b/src/kiwano/core/String.h index 2307a5f7..a1ab168c 100644 --- a/src/kiwano/core/String.h +++ b/src/kiwano/core/String.h @@ -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);