Advertisement
Guest User

Untitled

a guest
Apr 26th, 2015
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.48 KB | None | 0 0
  1. #include <cstdio>
  2. #include <cstdarg>
  3.  
  4. namespace xstr {
  5.  
  6. std::string printf(const char *fmt, ...) {
  7. va_list args;
  8. va_start(args, fmt);
  9. char buf[32];
  10. size_t n = std::vsnprintf(buf, sizeof(buf), fmt, args);
  11. va_end(args);
  12.  
  13. // Static buffer large enough?
  14. if (n < sizeof(buf)) {
  15. return {buf, n};
  16. }
  17.  
  18. // Static buffer too small
  19. std::string s(n + 1, 0);
  20. va_start(args, fmt);
  21. std::vsnprintf(const_cast<char*>(s.data()), s.size(), fmt, args);
  22. va_end(args);
  23.  
  24. return s;
  25. }
  26.  
  27. } // namespace xstr
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement