У меня есть следующая обертка, чтобы выставить мои C++ кода на C#Преобразования сопзЬ гольца ** в StD :: вектора <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!? */);
Как я могу сделать необходимое преобразование и есть лучший способ передачи в массиве строк (string[]
) из C# для C++ через Interop?
Спасибо за ваше время.
Следует ли считать, что список заканчивается указателем NULL? – WhozCraig
Должен быть протокол для определения длины массива. Что это? –
Я надеялся сделать число строк в переменной 'fileList'. Поэтому, имея в C# 'List fileList = новый список {/ * some list * /};', а затем используя 'ToArray()' перед передачей массива методу interop. Как я уже сказал, я не делал этого раньше, поэтому открываю другие методы (если они есть). Можно получить 'fileList', используя каталог, поскольку все они содержатся в одной папке, поэтому я мог бы передать другой' const char * ', который содержит путь к каталогу, который, в свою очередь, используется для получения необходимых путей к файлам? –
MoonKnight