有一个函数需要一个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] 删除。
我来说两句