![](/img/trans.png)
[英]Convert std::vector<std::string> to const char* const*
[英]Convert const std::vector<std::string> to const char **
我有一个签名函数,如下所示:
void foo(const std::vector<std::string>& args)
{
...
}
我想将向量args
转换为const char **
(就像argv
中的argv
一样)。 如何做到这一点? 我们实际上不能创建char **
数组,因为这样(显然)它无法将类型为const char *
args[i].c_str()
转换为char *
。
我能想到的唯一(难看)的方法是使用const_cast
从const char *
为char *
。
有人会建议更优雅的方式吗? 我应该注意,我只能使用c ++ 03功能。
提前致谢。
没有额外的数组就无法完成。 const char**
意思是“指向const char**
的指针的指针”-因此您需要一个实际指向char的指针的地方。
因此,您需要创建该数组。
struct c_str { const char* operator ()(const std::string& s) { return s.c_str(); } };
std::vector<const char*> pointers(args.size());
std::transform(args.begin(), args.end(), pointers.begin(), c_str());
// If you really want to be compatible with argv:
pointers.push_back(0);
// &pointers[0] is what you want now
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.