【发布时间】:2014-11-19 20:10:07
【问题描述】:
我有一个vector<std::string> 变量。我需要将它传递给一个接受char**作为输入参数的方法。
如何做到这一点?如果可能的话,我需要传递一个可写的。
更新 1: 在用于创建服务方法的工具中,我将参数指定为 std::vector,但它会自动将限定符设置为 &,这意味着该工具生成的我的方法定义将如下所示:
std::string SvcImpl::myMethodname ( const std::string par1, const std::vector< std::string >& par2, const std::vector< std::string >& par3 )
{
}
此方法会自动调用,并使用传递的参数中的值。 现在从这个方法内部,我将调用 lib 文件夹中的 dll 中的一个方法,如下所示:
int method_to_be_called(char* par1, char ** par2, char ** par3, void* pRetValue);
for par1 --> 我正在传递 (char*)par1.c_str()
我需要知道如何为 par2 和 par3 以及 pRetValue 传递变量。 par2 和 par3 的值在向量中可用,但最后一个参数 pRetValue 是一个输出参数,我需要将其作为 std::string 返回。
对不起,如果我很困惑或提出非常基本的问题。
【问题讨论】:
-
那么你的操作应该在
*writable,假设**writable正在接受你的char **参数。 -
我认为您需要生成一个新的
std::vector<char*>来存储所有字符串数据的地址。 -
你传递的这个方法到底是做什么的?
-
您真的需要将字符串的内容复制到新数组中,还是直接使用指向底层数据的指针?
-
@juanchopanza “基础数据”将是一个字符串对象数组,你不能像他们是一个 c 字符串数组一样遍历它们。