Как читать строки c char **?

у меня есть char** (нулевой завершающий массив: последний элемент массива равен NULL), возвращаемый функцией (которую я не могу изменить):

char** ptar = get_ptar();

Я хочу перебрать его и передать его значение другой функции (опять же, которую я не могу изменить):

collection(int index, char* str);

У меня есть этот код до сих пор:

int I = 0;
while (*ptar != 0)
{
collection(i, (char*)(ptar));
ptar++; i++;
}

Но это проходит мусорное значение.

Есть ли лучший способ получить строку из массива с нулевым символом в конце?


Связанный вопрос:

Есть ли способ получить длину char** ptar используя C ++ 11:

std::char_traits<?>::length

1

Решение

Попробуйте следующее:

for ( int i = 0; *( ptar + i ) != 0; i++ )
{
collection( i, *( ptar + i ) );
}

Или же

for ( int i = 0; ptar[i] != 0; i++ )
{
collection( i, ptar[i] );
}

В C ++ 2011 вместо целочисленной константы 0 в качестве выражения нулевого указателя вы можете использовать nullptr

Чтобы найти длину ptar вы можете сделать это:

int n = 0;

while ( ptar[n] ) ++n;
4

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