问题描述
我不熟悉Objective C和C ++,并且在this tutorial之后成功地在Objective C中调用了C ++函数。
但是,上面的示例中的示例函数没有输入参数,类似于:
//In example C++ file:
std::string Greeting::greet() {
return someString;
}
//In example Objective-C file:
Nsstring* newTitle = [Nsstring stringWithCString:greeting.greet().c_str() encoding:[Nsstring defaultCStringEncoding]];
std::string Greeting::newGreet(std::vector<std::string> s) {
// do something
// f(s)
return someString;
}
在Objective-C中没有std :: vector
如何进行此转换并将其传递给newGreet()
函数?
解决方法
取决于您是否要使用字符串向量或字符串指针向量:
std::vector<std::string> vect = {};
for (NSString * str in nsArrayOfStrings) {
std::string cppStr([str UTF8String]);
vect.push_back(cppStr);
}
或
std::vector<std::string *> vect = {};
for (NSString * str in nsArrayOfStrings) {
std::string * cppStrPtr = new std::string([str UTF8String]);
vect.push_back(cppStrPtr);
}