у меня есть 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
Попробуйте следующее:
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;