diff options
author | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-06-06 03:52:48 +0900 |
---|---|---|
committer | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-06-18 11:25:42 +0900 |
commit | 776ca3085c44e6570813270df75278849c37d400 (patch) | |
tree | 6dc3f2d468cfd860347f2f9d519f49c2a38d4c64 /stringprintf.cc | |
parent | a3caa8166baeb348f817eb1b4fa2e81672b3d77f (diff) | |
download | android_build_kati-776ca3085c44e6570813270df75278849c37d400.tar.gz android_build_kati-776ca3085c44e6570813270df75278849c37d400.tar.bz2 android_build_kati-776ca3085c44e6570813270df75278849c37d400.zip |
[C++] The first commit for C++ version
16 tests out of 169 are passing.
Diffstat (limited to 'stringprintf.cc')
-rw-r--r-- | stringprintf.cc | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/stringprintf.cc b/stringprintf.cc new file mode 100644 index 0000000..d4fe74f --- /dev/null +++ b/stringprintf.cc @@ -0,0 +1,22 @@ +#include "stringprintf.h" + +#include <assert.h> +#include <stdarg.h> + +string StringPrintf(const char* format, ...) { + string str; + str.resize(128); + for (int i = 0; i < 2; i++) { + va_list args; + va_start(args, format); + int ret = vsnprintf(&str[0], str.size(), format, args); + va_end(args); + assert(ret >= 0); + if (static_cast<size_t>(ret) < str.size()) { + str.resize(ret); + return str; + } + str.resize(ret + 1); + } + assert(false); +} |