Возврат массива C-строк в переполнении стека

Моя функция имеет этот прототип:

char[][100] toArray(char document[]);

G ++ на Cygwin возвращает эту ошибку:

Unable to resolve identifier toArray

Как мне вернуть массив C-строк?

0

Решение

Невозможно вернуть массив в C ++. Самое близкое, что вы можете сделать, это вернуть указатель на динамически размещенный блок строк.

Это юридический код

typedef char str100[100];

str100* toArray(char* document)
{
str100 *block = new str100[20];
return block;
}

Typedef делает его немного легче для понимания. Если вы не верите мне, вот тот же код без typedef

char (*toArray(char* document))[100]
{
char (*block)[100] = new char[20][100];
return block;
}

Это должно вас напугать.

Но хотя этот кодекс является законным, это также мусор. Вы должны использовать std::vector<std::string>, Динамически распределять память сложно, гораздо сложнее, чем использовать классы, которые делают всю работу за вас.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]