我有以下包裝我的C++代碼暴露給C#轉換爲const char **的爲std :: vector的<std::string>
extern "C" {
LIBRARY_API void GenerateTables(
const char* version,
const char* baseDir,
const char** fileList);
} // end extern "C"
void GenerateTables(
const char* version,
const char* baseDir,
const char** fileList)
{
std::string strVersion(version);
std::string strBaseDir(baseDir);
// I now need to convert my const char** to std::vector<std::string>
// so it can be passed to another internal method.
}
我怎麼能轉換我const char** fileList
到std:vector<std::string>
。我對C++相對來說比較陌生,這裏有一個明確的內存分配問題。我可以做類似
std::vector<std::string> vec;
for (int i = 0; i < fileList.length() /* length() of what!? */; i++)
vec.push_back(/* what!? */);
我該怎麼辦所需的轉換,是通過有互操作從C#字符串(string[]
)的數組傳遞給C++的一個更好的辦法?
謝謝你的時間。
我們應該承擔的名單是由一個NULL指針終止轉換
fileList
? – WhozCraig需要有一些協議來確定數組的長度。它是什麼? –
我希望在'fileList'變量中創建字符串的數量。因此,在C#中列出# fileList = new List {/ * some list * /};'然後在將數組傳遞給interop方法之前使用'ToArray()'。就像我說過的,我之前沒有這樣做過,所以對其他方法開放(如果有的話)。可以使用一個目錄來獲得'fileList',因爲它們都包含在一個文件夾中,所以我可以傳入另一個'const char *',它包含一個目錄路徑,而該目錄路徑又用於獲取所需的文件路徑? –
MoonKnight