如何将字符串数组转换为 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中的地址可能无效?这样做的正确方法是什么?

songyuanyao

问题与 无关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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章