diff options
| author | _ov4 <ov4@ov4.org> | 2026-09-01 05:37:17 +0000 |
|---|---|---|
| committer | _ov4 <ov4@ov4.org> | 2026-09-01 05:37:17 +0000 |
| commit | 30726f56c8c522e81e65055ada52f56d95f68575 (patch) | |
| tree | 000976c50c1fd26f43154db1af8dbcfd6ec50b8e /src/util/string.cc | |
| parent | 7d18b6dfe664a3b655e7eed4cc94cd7591506ce1 (diff) | |
string util
Diffstat (limited to 'src/util/string.cc')
| -rw-r--r-- | src/util/string.cc | 38 |
1 files changed, 38 insertions, 0 deletions
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<string> * 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<string> *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]); + } +} + +} |
