// Copyright 2002 and onwards Google Inc. // // Printf variants that place their output in a C++ string. // // Usage: // string result = StringPrintf("%d %s\n", 10, "hello"); // SStringPrintf(&result, "%d %s\n", 10, "hello"); // StringAppendF(&result, "%d %s\n", 20, "there"); #pragma once #include #include using std::string; #include using std::vector; #include "gutil/port.h" // Return a C++ string extern string StringPrintf(const char* format, ...) // Tell the compiler to do printf format string checking. PRINTF_ATTRIBUTE(1, 2); // Store result into a supplied string and return it extern const string& SStringPrintf(string* dst, const char* format, ...) // Tell the compiler to do printf format string checking. PRINTF_ATTRIBUTE(2, 3); // Append result to a supplied string extern void StringAppendF(string* dst, const char* format, ...) // Tell the compiler to do printf format string checking. PRINTF_ATTRIBUTE(2, 3); // Lower-level routine that takes a va_list and appends to a specified // string. All other routines are just convenience wrappers around it. extern void StringAppendV(string* dst, const char* format, va_list ap); // The max arguments supported by StringPrintfVector extern const int kStringPrintfVectorMaxArgs; // You can use this version when all your arguments are strings, but // you don't know how many arguments you'll have at compile time. // StringPrintfVector will LOG(FATAL) if v.size() > kStringPrintfVectorMaxArgs extern string StringPrintfVector(const char* format, const vector& v);