#include <iostream>
#include <stdarg.h>
#include <string>
#include <vector>
std::string string_format(const char *fmt, ...) {
std::vector<char> str(100);
va_list ap;
while (1) {
va_start(ap, fmt);
int n = vsnprintf(&str[0], str.size(), fmt, ap);
va_end(ap);
if (n > -1 && n < str.size()) {
str.resize(n);
return &str[0];
}
str.resize(str.size() * 2);
}
}
int main() {
std::cout << string_format("%s %s!\n", "Hello", "World");
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RkYXJnLmg+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDx2ZWN0b3I+CgpzdGQ6OnN0cmluZyBzdHJpbmdfZm9ybWF0KGNvbnN0IGNoYXIgKmZtdCwgLi4uKSB7CiAgICBzdGQ6OnZlY3RvcjxjaGFyPiBzdHIoMTAwKTsKICAgIHZhX2xpc3QgYXA7CiAgICB3aGlsZSAoMSkgewogICAgICAgIHZhX3N0YXJ0KGFwLCBmbXQpOwogICAgICAgIGludCBuID0gdnNucHJpbnRmKCZzdHJbMF0sIHN0ci5zaXplKCksIGZtdCwgYXApOwogICAgICAgIHZhX2VuZChhcCk7CiAgICAgICAgaWYgKG4gPiAtMSAmJiBuIDwgc3RyLnNpemUoKSkgewogICAgICAgICAgICBzdHIucmVzaXplKG4pOwogICAgICAgICAgICByZXR1cm4gJnN0clswXTsKICAgICAgICB9CiAgICAgICAgc3RyLnJlc2l6ZShzdHIuc2l6ZSgpICogMik7CiAgICB9Cn0KCmludCBtYWluKCkgewogIHN0ZDo6Y291dCA8PCBzdHJpbmdfZm9ybWF0KCIlcyAlcyFcbiIsICJIZWxsbyIsICJXb3JsZCIpOwogIHJldHVybiAwOwp9