<分区>
Possible Duplicate:
std::vector<std::string> to char* array
我必须调用一个接受字符串指针数组的 c 函数。示例
void cFunction(char* cities[], int count)
{
for(int i = 0; i < count; ++i )
{
printf("%s\n", cities[i]);
}
}
假设函数在某个第三方库中;无法更改
我可以声明一个静态数组并像这样调用函数
char* placesA[] = {"Teakettle Junction", "Assawoman Bay", "Land O' Lakes", "Ion", "Rabbit Hask" };
cFunction(placesA, 5);
这样可行。但是我的数据是动态的,即数组的大小在运行时多次变化
所以我尝试了这个
std::vector<std::string> placesB(placesA, placesA + 5);
cFunction(&placesB[0], 5); // this won't work because std::string != char*[]
试过这个
std::vector<char*> placesC;
cFunction(&placesC[0], 5);
我发现 placesC
难以同时填充以避免内存泄漏
我正在寻找一种既高效(尽可能少的字符串复制,最好使用 STL 和/或 Boost )