我有一个函数返回的char**
(一个空终止数组:数组的最后一个元素为NULL)(我无法更改):
char** ptar = get_ptar();
我想迭代它并将其值传递给另一个函数(我再也无法改变):
collection(int index, char* str);
到目前为止我有这个代码:
int I = 0;
while (*ptar != 0)
{
collection(i, (char*)(ptar));
ptar++; i++;
}
但是它传递了垃圾值。
有没有更好的方法从空终止数组中获取字符串?
相关问题:
有没有办法使用C ++ 11获得char** ptar
的长度:
std::char_traits<?>::length
答案 0 :(得分: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;