在C++中,我有一个主函数,其中包含
int argc, char * argv[]
我需要在另一个函数中访问argv[]
中的数据(即参数)。
我将声明一个全局变量,指向char ** argv
的指针。
我该怎么做?
int argc, char * argv[]
我需要在另一个函数中访问argv[]
中的数据(即参数)。
我将声明一个全局变量,指向char ** argv
的指针。
我该怎么做?
C++中,通常*处理argv
的最佳方式是:
int main(int argc, char **argv)
{
std::vector<std::string> args(argv, argv + argc);
}
现在你有了一个正确构造的std::vector
,名为args
,其中包含每个argv
元素作为一个std::string
。不再有丑陋的C风格的const char*
。
然后,您可以根据需要直接传递此向量或其某些元素。
* 它带来了动态分配每个argv
字符串副本的内存和时间开销。但是对于绝大多数程序而言,命令行处理并不关乎性能,而提高可维护性和鲁棒性则非常值得。
char **global_argv = NULL;
int main(int argc, char * argv[]){
...
global_argv = argv;
...
}
void my_fun1(int argc, char **argv); // Passing all the program arguments
void my_fun2(char *arg); // Passing just the one you need
int main(int argc, char * argv[]){
...
my_fun1(argc, argv);
my_fun2(argv[3]); // Supposing you need the 3rd parameter (fourth on argv)
...
}
global_argv
声明为 static
。 - Lundin
argv[1]
、argv[2]
等)作为单独的const char *
参数传递。 - Paul Rfunction(char **, some-other types)
,并将其用作function(argv, some-other variable)
。 - noufal