From 30726f56c8c522e81e65055ada52f56d95f68575 Mon Sep 17 00:00:00 2001 From: _ov4 Date: Tue, 1 Sep 2026 05:37:17 +0000 Subject: string util --- src/util/string.cc | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/util/string.cc (limited to 'src/util/string.cc') diff --git a/src/util/string.cc b/src/util/string.cc new file mode 100644 index 0000000..8c6c86a --- /dev/null +++ b/src/util/string.cc @@ -0,0 +1,38 @@ +#include "util/string.h" + +namespace ov4 +{ + +using namespace std; + +void string2argv(const vector * const s, char **argv) +{ + + // pointers [0, size) + // nullptr [size] + // data [size+1, ...) + + char *p = (char*)(argv + s->size() + 1); + + argv[s->size()] = nullptr; + + for (size_t i = 0; i < s->size(); i++) + { + strcpy(p, (*s)[i].c_str()); + argv[i] = p; + p += (*s)[i].size() + 1; // for '\0' + } +} + +void argv2string(vector *s, const char * const * argv) +{ + if (argv == nullptr) return; + + for (size_t i = 0; true; i++) + { + if (argv[i] == nullptr) return; + s->push_back(argv[i]); + } +} + +} -- cgit v1.3.1-4-g156e