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

标签: c++

解决方案


问题与 无关,str迭代后会被销毁,但这并不意味着char它指向的数组也会被销毁。

问题被mystring声明为复制,它将在迭代后被销毁,然后char返回的数组c_str也被销毁。分配到的指针res变得悬空。

您可以更改mystring为参考(到const),例如

for (auto const & mystring : strings) {
    const char * str = mystring.c_str();
    res[i++] = str;
}

推荐阅读