我想的是这样的:
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
被声明为by-copy,它会在迭代后被销毁,然后char
返回的数组也被c_str
销毁。分配到的指针res
变为悬空。
您可以更改mystring
为参考(到const
),例如
for (auto const & mystring : strings) {
const char * str = mystring.c_str();
res[i++] = str;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句