c++ - 如何将字符串数组转换为 const char **?
问题描述
我想是这样的:
const char * res[cnt];
int i = 0;
for (auto mystring : strings) {
const char * str = mystring.c_str();
res[i++] = str;
}
//然后将 res 传递为 const char **
但是我突然想到'str'是一个局部变量,存储在res中的地址可能无效?这样做的正确方法是什么?
解决方案
问题与 无关,str
迭代后会被销毁,但这并不意味着char
它指向的数组也会被销毁。
问题被mystring
声明为复制,它将在迭代后被销毁,然后char
返回的数组c_str
也被销毁。分配到的指针res
变得悬空。
您可以更改mystring
为参考(到const
),例如
for (auto const & mystring : strings) {
const char * str = mystring.c_str();
res[i++] = str;
}