gpt4 book ai didi

c++ - 在 C++ 中将 (argc, argv) 变量作为 (argv, argc) inside main inside 传递给函数

转载 作者:行者123 更新时间:2023-11-27 23:03:16 26 4
gpt4 key购买 nike

我正在使用库中的一个函数,该函数调用主程序中的 (argc,argv) 命令行函数直接传递给它;但是,我只想将一些参数传递给它,其余的在主代码中评估而不是函数。以下是带有评估参数的主要代码示例。

int main(int argc,char** argv)
{
// Evaluate arguments
if ( argc > 9 ) {
PrintUsage();
return 1;
}
G4String input;
G4String macro;
G4String physicslist;
for ( G4int i=1; i<argc; i=i+2 ) {
if ( G4String(argv[i]) == "-i" ) macro = argv[i+1];
else if ( G4String(argv[i]) == "-l" ) physicslist = argv[i+1];
else if ( G4String(argv[i]) == "-g" ) input = argv[i+1];
else if //pass the rest of the arguments to function below
G4MPImanager* g4MPI = new G4MPImanager(argc,argv);

上面未评估的任何其他参数我想从外部库传递给函数,这需要如图所示调用。

谢谢!

最佳答案

argv 只是一个由最终 NULL 指针终止的 char 指针数组。您可以使用 my_argv = new char *[number_of_items + 1] 创建自己的参数,其中 number_of_items 是您希望从“真实”argv(或您自己的字符串)。这样的数组可以传递给 G4MPIManager 构造函数,而不是 main() 中接收的实际 argv

补充说明:

  • 不要忘记用 NULL 指针终止 argv

  • argv 的第一个成员,argv[0],将被期望保存“程序名称”,因此将被忽略或仅用于前缀诊断消息。只需重复使用从 main() 获得的 argv[0]

  • argc 应满足 argv[argc] == NULL,即与上面的 number_of_items 相同。鉴于 argv 数组必须包含程序名称作为第一个成员,argc 永远不会为 0。

关于c++ - 在 C++ 中将 (argc, argv) 变量作为 (argv, argc) inside main inside 传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25697933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com