有一个函数需要一个 const char* 数组,基本上是一个单词列表。因为这个单词列表可以改变,所以我不能在程序开始时声明和初始化这个数组。现在,我有一个字符串 vector ,我需要将其转换为一个 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*> ptrs;
for (std::string const& str : list) {
ptrs.push_back(str.data());
}
如果你需要你的const char**
,你可以调用ptrs.data()
。当然,问题在于 ptrs
和 list
都必须保持事件状态才能使 ptrs.data()
有效。
另一件需要注意的事情是,如果您将更多元素push_back
到list
,那么list
可能会重新分配,这会使指针无效在 ptrs
中。