Как я могу получить доступ к массиву, возвращенному в виде указателя из функции, используя индекс?

Я создал функцию, которая возвращает указатель на массив строк. Функция должна проходить по связанному списку и назначать данные из каждого узла в массив строк. Вот моя функция:

//function to traverse every node in the list
string *DynStrStk::nodeStrings(int count)
{
StackNode *nodePtr = nullptr;
StackNode *nextNode = nullptr;
int i = 0;

//Position nodePtr at the top of the stack
nodePtr = top;

string *arr = new string[count];

//Traverse the list and delete each node
while(nodePtr != nullptr && i < count)
{
nextNode = nodePtr->next;
arr[i] = nodePtr->newString;
nodePtr = nextNode;

cout << "test1: " << arr[i] << endl;
}

return arr;
}

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

У меня проблемы с доступом к новому массиву, и я даже не могу распечатать строку в каждом новом элементе массива.

arr = stringStk.nodeStrings(count);
cout << "pointer to arr of str: " << *arr << endl;
for(int i = 0; i < count; i++)
{
cout << "test2: " << arr[i] << endl;
}

это мой вывод после вызова обеих функций:

test1: rotor
test1: rotator
test1: racecar
test1: racecar
pointer to arr of str: racecar //this test tells me i can get to array
test2: racecar
test2:
test2:
test2:

это мой ожидаемый результат

test1: rotor
test1: rotator
test1: racecar
test1: racecar
pointer to arr of str: racecar
test2: racecar
test2: racecar
test2: rotator
test2: rotor

что я делаю не так и как я могу получить доступ к каждому элементу в новом массиве из второй функции ??????

Спасибо!!!!

вот вторая функция, использующая указатель на массив:

int createStack(fstream &normFile, ostream &outFile)
{
string catchNewString;
string testString, revString;

string *arr;

int count = 0; //counts the number of items in the stack

DynStrStk stringStk;

while(getline(normFile,catchNewString)) // read and push to stack
{
stringStk.push(catchNewString); // push to stack
//tracer rounds
outFile << catchNewString << endl;
count++;

}arr = stringStk.nodeStrings(count);

cout << "pointer to arr of str: " << *arr << endl;

for(int i = 0; i < count; i++)
{

cout << "test2: " << (arr[i]) << endl;
}

return count;
}

0

Решение

Вы забыли увеличить i в функции DynStrStk::nodeStrings, Поэтому все ваши задания arr[0],

2

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

Обычно вы не хотите «возвращать» указатели на массивы.
Какой тип «arr» во внешней функции?
Во всяком случае, индексная запись действительна, что-то еще в вашем коде нет.

0

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