如何从char **中读取cstrings?

时间:2014-11-16 18:50:27

标签: c++ arrays c++11 char-traits

我有一个函数返回的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

1 个答案:

答案 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;