在代码中创建argc argv
create argc argv in the code
你好,这是一个新手问题,但是我就是想不明白:
我有一个名为bar的函数
class foo
{
public:
bool bar(int argc, char** argv);
}
argv应该包含
"--dir" and "/some_path/"
我如何创建argv和argc,以便我可以将它们传递给bar() ?我已经尝试了很多方法,但我就是不能得到指针和类型转换的权利。
所以我想在代码中创建argv,而不是从命令行获取argv。
谢谢你的意见!
我最喜欢的方式是这样的:
std::vector<std::string> arguments = {"--dir", "/some_path"};
std::vector<char*> argv;
for (const auto& arg : arguments)
argv.push_back((char*)arg.data());
argv.push_back(nullptr);
f.bar(argv.size() - 1, argv.data());
注意,如果参数是静态的,并且不会改变,那么这有点矫枉过正。但是这种方法的优点是符合RAII。它为您管理内存并在适当的时候删除对象。因此,如果参数列表是动态的,那么它是最干净的方式。
除此之外,如果f.bar
修改了argv数组中的数据,该代码在技术上是UB。通常情况下并非如此。
假设您希望argc和argv的格式与传递给main
的格式相同,您可以这样调用它:
foo f;
char *args[] = {
(char*)"--dir",
(char*)"/some_path/",
NULL
};
f.bar(2, args);
(注意:这假设bar
不会修改参数字符串-在这种情况下,您应该将参数类型更改为const char **
而不是char **
)
相关文章:
- 视频捕获与" int main(int argc, char **argv) "
- 为什么现代C 仍然保留旧的C样式原型,用于int argc,char ** argv
- 将ARGV和ARGC传递给Main作为数组
- 带有 argc 和 argv 的素数
- 将 argc 和 argv 传递给 QApplication 到单元测试用例方法中
- 无论如何,在我的主文件之外传递 argc、argv .cpp
- Qapplication中没有成员ARGC和ARGV
- 函数main中的参数argv(int argc,char *argv [])
- C++ (int getopt(argc, (char **)argv, optstring)
- C++ 从节点模拟 int main(int argc, char *argv[])
- argc C++中的argv参数(游戏编程)
- argc atoi argv, Opencv, C++
- 将ARGV和ARGC传递到线程
- char *argv []和int argc c 的全局覆盖范围
- 在 main() 之外处理 argc 和 argv
- 你能定义 main() 来接受不仅仅是 argc/argv 参数吗?
- 在代码中创建argc argv
- c++ gtkmm 3.0如何访问argc, argv
- 关于argc argv和env的混淆
- call main(argc, argv) from fork()