Вернуть массив строк с++

311
21 августа 2017, 09:50

Есть следующая задача: изначально мы не знаем размер массива, который нам надо обработать, необходимо написать функцию, которая бы работала с динамическим массивом и возвращала обработанный массив строк.

string fucntion(string* text[]) 
{
   string* text_out=new string[];
   /*
   *do something
   */
   return text_out;
}

Каким образом можно вернуть массив строк?

Answer 1

Странное смешение французского с нижегородским - массива C и строк C++.

Поскольку массив преобразуется в указатель на первый элемент - просто возвращайте указатель:

string* fucntion(string* text[]) 
{
    int N = 20; // Количество элементов массива
    string* text_out=new string[N];
    /*
     *do something
     */
     return text_out;
}

Но смотрите, сколько неприятностей: нужно не забыть освободить потом память, при возврате вы не возвращаете количество элементов, а по указателю его вам не узнать. Стоят ли эти неприятности, чтоб ради них отказываться от вектора?

Куда проще так:

vector<string> fucntion(/* что там нужно */) 
{
    vector<string> array;
    /*
     *do something
     */
    return array;
}

И никаких проблем!