util: c++ version of sprintf

This commit is contained in:
Robert Swiecki 2018-06-16 02:16:24 +02:00
parent 1ac94e7f61
commit d6e825ddb3
2 changed files with 19 additions and 0 deletions

18
util.cc
View File

@ -176,6 +176,24 @@ std::string* StrAppend(std::string* str, const char* format, ...) {
return str;
}
std::string StrPrintf(const char* format, ...) {
char* strp;
va_list args;
va_start(args, format);
int ret = vasprintf(&strp, format, args);
va_end(args);
if (ret == -1) {
PLOG_E("Memory allocation failed during asprintf()");
return "[ERROR: mem_allocation_failed]";
}
std::string str(strp, ret);
free(strp);
return str;
}
bool isANumber(const char* s) {
for (size_t i = 0; s[i]; s++) {
if (!isdigit(s[i]) && s[i] != 'x') {

1
util.h
View File

@ -40,6 +40,7 @@ bool writeBufToFile(const char* filename, const void* buf, size_t len, int open_
bool createDirRecursively(const char* dir);
std::string* StrAppend(std::string* str, const char* format, ...)
__attribute__((format(printf, 2, 3)));
std::string StrPrintf(const char* format, ...) __attribute__((format(printf, 1, 2)));
bool isANumber(const char* s);
uint64_t rnd64(void);
const std::string sigName(int signo);