Как передать char** внутрь сишной функции?
api выглядит вот так:
void foo(char** outStrings);
нужно подать char**. Естественно вся работа с памятью ложиться на вызывающую сторону. И вот вопрос, как это делать?
Можно написать raii класс для простоты.
class Strings {
public:
explicit String(size_t count, size_t stringSize) {
data = new char*[count];
for(int i = 0; i < count; ++i)
data_ [i] = new char[stringSize + 1];
}
~Strings() // деструткор все удалит
};
и использовать его вот так, точно зная, что деструктор вызовется и не будет мемориликов
Strings stringList(14,255);
foo(stringList.data());
А можно ли каким то образом передать внутрь той функции какойнибудь std::vector<std::string>> ? ну или сделать это какнить более "модерн" (под модерн я понимаю более современную интерпритацию плюсов... скажем ,например, без оператора new)?
Кто решал такие задачи, поделитесь опытом
Ответы (1 шт):
А причём тут классы, векторы и всё прочее из плюсов? Описание char ** пришло из чистого С и означает массив символьных массивов. Как то так:
int j;
char *array[20];
for (j=0; j<20; j++) array[j] = (char *) malloc(256);
foo(array);