Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <cstdarg>
- namespace xstr {
- std::string printf(const char *fmt, ...) {
- va_list args;
- va_start(args, fmt);
- char buf[32];
- size_t n = std::vsnprintf(buf, sizeof(buf), fmt, args);
- va_end(args);
- // Static buffer large enough?
- if (n < sizeof(buf)) {
- return {buf, n};
- }
- // Static buffer too small
- std::string s(n + 1, 0);
- va_start(args, fmt);
- std::vsnprintf(const_cast<char*>(s.data()), s.size(), fmt, args);
- va_end(args);
- return s;
- }
- } // namespace xstr
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement