diff --git a/src/string.cpp b/src/string.cpp index 8a6f79ead4..d9b2d55a2f 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -167,6 +167,28 @@ char *CDECL str_fmt(const char *str, ...) return output; } +std::string stdstr_vfmt(const char *str, va_list va) +{ + char buf[4096]; + + int len = vseprintf(buf, lastof(buf), str, va); + return std::string(buf, len); +} + +/** + * Format, "printf", into a std::string. + * @param str The formatting string. + * @return The formatted string. + */ +std::string CDECL stdstr_fmt(const char *str, ...) +{ + va_list va; + va_start(va, str); + std::string output = stdstr_vfmt(str, va); + va_end(va); + return output; +} + /** * Scan the string for old values of SCC_ENCODED and fix it to * it's new, static value. diff --git a/src/string_func.h b/src/string_func.h index a7b39c1825..15e02dfeed 100644 --- a/src/string_func.h +++ b/src/string_func.h @@ -40,6 +40,8 @@ int CDECL vseprintf(char *str, const char *last, const char *format, va_list ap) char *CDECL str_fmt(const char *str, ...) WARN_FORMAT(1, 2); char *str_vfmt(const char *str, va_list ap); +std::string CDECL stdstr_fmt(const char *str, ...) WARN_FORMAT(1, 2); +std::string stdstr_vfmt(const char *str, va_list va); char *str_validate_intl(char *str, const char *last, StringValidationSettings settings);