【发布时间】:2011-10-26 07:22:17
【问题描述】:
我有一个std::vector<std::string>,我需要将它用于C 函数的参数,该参数为char* foo。我有seen how 将std::string 转换为char*。作为C++ 的新手,我正在尝试拼凑如何对向量的每个元素执行此转换并生成char* 数组。
我见过几个密切相关的 SO 问题,但大多数似乎都说明了走向另一个方向并创建 std::vector<std::string> 的方法。
【问题讨论】:
-
什么是确切的 C 接口。根据 const 的位置以及函数在使用期间如何处理内存,我们可以做几件不同的事情(C 函数可以做一些讨厌的事情,比如调用 realloc)。
-
模型* ModelInitialize (char *fnames, int nterms)
-
该函数接受
char*,而不是您的问题中的char**。是哪个? -
字符*。对困惑感到抱歉。我无意中看到了一个将 char** fnames 作为参数并随后调用 ModelInitialize 的函数。
-
在函数签名中显然没有足够的信息来确定正确的行动方案。
fnames的所有权是否转移到ModelInitialize? (如果是这样:它必须如何分配?)调用代码是否意味着delete、free或以其他方式释放从ModelInitialize返回的Model? (如果是这样:它必须如何被释放?)fnames必须是一个以 null 结尾的字符串吗?可以通过哪些方式修改fnames?