可能重複:
std::vector<std::string> to char* array如何從C++字符串的指針的dymamic數組傳遞到C函數
我必須調用接受字符串指針陣列的C函數。示例
void cFunction(char* cities[], int count)
{
for(int i = 0; i < count; ++i)
{
printf("%s\n", cities[i]);
}
}
假設函數在某個第三方的libabry中;它不能改變
我可以聲明一個靜態數組,並調用函數這樣
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)
@Bertrand馬龍不是重複。我的源數據不一定是std :: string。我使用std :: vector作爲解決方案中的一個可能的中間步驟 –
cabralP