c++ - 如何将字符串指针的动态数组从 C++ 传递给 C 函数

标签 c++

<分区>

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 )

最佳答案

您可以编写一个函数来填充 vector<char*>来自vector<string>使用 .c_str()在每个字符串上。

关于c++ - 如何将字符串指针的动态数组从 C++ 传递给 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7152984/

相关文章:

c++ - 我正在尝试制作一个方程式计算器,计算出一颗卫星(不一定是人造卫星)围绕一个半径需要多长时间

c++ - 只有一个模板特化有用吗?

c++ - 根据 vector<bool> 的内容排序 vector<vector<bool>>

c++ - MPI 分布式、无序工作

c++ - 这段代码是冒泡排序程序吗?

c++ - 为可能包含或不包含指针的列表类中的泛型方法禁用编译器警告 2100

c++ - 在 Windows 上编译 gcc 4.7

c++ - 在 Eclipse ADT 中,我创建一个新的 cpp 文件并收到 "undefined reference"错误

c++ - 括号括起来的实例的销毁

c++ - 奇怪的 "unable to match function definition"