2017-02-01 3 views
0

Я ищу способ вызова execvp() в C++-программе, которая использует строковые массивы. Так что если, например, у меня есть массив строк,Преобразование из строкового массива в char * const

s[0] = "ls"; 
s[1] = "-l"; 

затем, s[i].c_str() преобразует его в const char*. Однако мне нужно, чтобы s[i] преобразован в char* const, чтобы передать его execvp(). Есть ли способ сделать это на C++?

+1

Используйте 'const_cast' –

+0

и должен быть уверен, что указатель станд :: строка берется, существует в последний момент алгоритма с помощью указателя (часто ошибка: указатель с переменной в стеке) –

+0

или делать копии строк –

ответ

1

Я смог ответить на свой вопрос. Мне пришлось преобразовать const char* в char*.

Однако, поскольку C++ не позволяет преобразовать из const char* в char*, мне пришлось создать функцию extern C. Я преобразовал строку s в C-строку (как const char*), передал ее функции extern C. Внутри функции C я мог бы затем преобразовать ее из const char* в char* и затем передать ее execvp().

Смежные вопросы