c++ - Turn std::string into array of char* const*'s -


i writing command shell in c++ using posix api, , have hit snag. executing via execvp(3), somehow need turn std::string contains command suitable array of char* consts*'s can passed to:

int execvp(const char *file, char *const argv[]); 

i have been racking brain hours can't think of realistic or sane way this. or insight on how can achieve conversion appreciated. thank , have day!

edit: per request of chnossos, here example:

const char *args[] = {"echo", "hello,", "world!"}; execvp(args[0], args); 

assuming have string contains more "one argument", first have split string (using std::vector<std::string> work store separate strings), each element in vector, store .c_str() of string const char args[maxargs] [or std::vector<const char*> args; , use args.data() if don't mind using c++11]. not forget store 0 or nullptr in last element.

it critical if use c_str string basing of not temporary, const char* x = str.substr(11, 33).c_str(); not give thing want, because @ end of line, temporary string destroyed, , it's storage freed.

if have 1 actual argument,

const char* args[2] = { str.c_str(), 0 };  

would work.


Comments