如何将“ std :: vector <std :: string>”转换为“ const char * array”?

柠檬糖果

有一个函数需要一个const char *数组,基本上是一个单词列表。由于此单词列表可能会更改,因此我无法在程序启动时声明并初始化此数组。现在,我有一个字符串向量,需要将其转换为const char *数组。如何才能做到这一点?谢谢!

例:

std::vector<std::string> list;
list.push_back("word1");
list.push_back("word2"); // and so on...

const char* wordList[] = ???
皮特·贝克尔

您不能转换它,但是创建数组很简单

std::vector<const char*> strings;
for (int i = 0; i < list.size(); ++i)
    strings.push_back(list[i].c_str();

现在,strings.data()为您提供的数组const char*

请注意,销毁strings后不应再使用list它,因为它持有指向驻留在中的数据的指针list我可能将其包装在一个函数中:

void call_C_function(const std::vector<std::string>& list) {
    std::vector<const char*> strings;
    for (int i = 0; i < list.size(); ++i)
        strings.push_back(list[i].c_str());
    c_function(strings.data());
}

这样,strings将仅通过调用才能存在c_function,并且没有持久的危险list

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将std :: string转换为const char *或char *?

将const char **转换为std :: vector <const char *>

如何将 std::vector<std::string> 转换为 C api 的 char*[]

如何将 const char& 转换为 const std::string&?

如何将std :: array转换为std :: vector?

如何将std :: wstring转换为char const []

如何将std :: string_view转换为const char *?

将 const char 转换为 std::string 作为标题

如何将char *数组转换为std :: string

如何将char *转换为std :: string

将 std::vector<T> 转换为 char *

将const std :: vector <char>强制转换为未签名的char *?

将std :: vector <std :: vector <std :: string >>转换为std :: vector <std :: vector <double >>

将std :: string转换为const tchar *

错误:无法将'std :: basic_string <char> :: iterator ...'转换为'const char * for parameter'1'...'

C ++错误:无法将'std :: basic_string <char>'转换为'const char *'

将char *转换为std :: string

如何将std :: string用于Const Char参数

std :: string强制转换为const char *在std :: unordered_set <const char *>中找不到

错误:无法将'tab'从'vector <std :: vector <std :: __ cxx11 :: basic_string <char> >>'转换为'vector <std :: __ cxx11 :: basic_string <char >>

如何从std :: vector <char>构造std :: string?

如何将未签名的char []转换为std :: vector <unsigned char>

C ++ const char *转换为std :: string&

将std :: vector <char>的一部分转换为std :: array <char,n>,c ++ 11

如何将std :: string转换为std :: vector <uint8_t>?

为什么将const char *强制转换为std :: string起作用?

字符串自动将const char *转换为std :: string

将 std::vector 转换为不带 \0 的 std::string

将std :: string索引转换为std :: vector中的整数