1

我有一个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

4

1 回答 1

4

尝试以下操作:

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;
于 2014-11-16T18:57:19.293 回答