将字符串数组转换为char **

时间:2013-08-09 05:03:39

标签: c++

例如:

string str[3];
void foo(char** str)
{
  //do something to str...
}

如何以方便的方式将str []传递给foo函数?

1 个答案:

答案 0 :(得分:4)

该函数需要一个指针数组,因此您必须从字符串数组中创建一个:

std::vector<char*> pointers;
for (auto & s : str) {
    pointers.push_back(&s[0]);
}
foo(&pointers[0]);

请注意,如果函数修改指针或它们指向的字符串,这可能无效。如果可能的话,更好的选择是避免混合使用C和C ++样式的字符串处理。