diff --git a/core/format.cpp b/core/format.cpp index e9a7c9525..b037361bb 100644 --- a/core/format.cpp +++ b/core/format.cpp @@ -407,3 +407,13 @@ extern "C" void put_vformat_loc(struct membuffer *b, const char *fmt, va_list ar memcpy(b->buffer + b->len, data, utf8_size); b->len += utf8_size; } + +// TODO: Avoid back-and-forth conversion between UTF16 and UTF8. +std::string casprintf_loc(const char *cformat, ...) +{ + va_list ap; + va_start(ap, cformat); + QByteArray utf8 = vqasprintf_loc(cformat, ap).toUtf8(); + va_end(ap); + return std::string(utf8.constData(), utf8.size()); +} diff --git a/core/format.h b/core/format.h index 0498fe2be..511b319f8 100644 --- a/core/format.h +++ b/core/format.h @@ -11,6 +11,7 @@ #include __printf(1, 2) QString qasprintf_loc(const char *cformat, ...); __printf(1, 0) QString vqasprintf_loc(const char *cformat, va_list ap); +__printf(1, 2) std::string casprintf_loc(const char *cformat, ...); #endif #ifdef __cplusplus