我需要调用下面的getList函数,它来自一个我无法更改的库。
#include <iostream>
#include <vector>
#include <string>
//function already exists in a separate library, can't be changed
void getList(const char* list[], int count){};
int main()
{
std::vector<std::string> vectorOfStrings = {"123" , "abc", "def", "456"};
//call getList and pass vectorOfStrings and vectorOfStrings.size()
getList(/*convert std::vector<std::string> to const char** */, vectorOfStrings.size());
return 0;
}
我已经问过类似的问题here并得到了答案,但我认为可能有一种C++的方法可以做到这一点。
2条答案
按热度按时间vmdwslir1#
使用
std::vector<const char*>
存储原始std::vector<std::string>
中存储的字符串数据的指针。这是一个快速操作,因为您要复制原始数据,但请注意:这要求传递给函数的
const char*
不存储在任何地方,因为一旦原始字符串被释放,它们将变为INVALID(您将得到未定义的行为)。txu3uszq2#
由于
vector
元素不是C类型,因此需要构造一个数组传递给函数:或者,用更接近C++的方式: