繁体   English   中英

转换const std :: vector <std::string> const char **

[英]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_castconst 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM