在C++中我有一个主要功能与如何在main中指向char * argv []?
int argc, char * argv[]
我需要另一个函数来访问数据argv[]
(即参数)。
我将声明一个全局变量,一个指向char **argv
的指针。
我该怎么做?
在C++中我有一个主要功能与如何在main中指向char * argv []?
int argc, char * argv[]
我需要另一个函数来访问数据argv[]
(即参数)。
我将声明一个全局变量,一个指向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
在C++中,通常*处理argv
最好的办法是这样的:
int main(int argc, char **argv)
{
std::vector<std::string> args(argv, argv + argc);
}
现在你具有args
,正确构造的std::vector
将argv
的每个元素保存为std::string
。看不到丑陋的C型const char*
。
然后,您可以根据需要传递此向量或其某些元素。
*它携带内存&时间开销动态分配每个argv
字符串的一个副本。但是对于绝大多数程序来说,命令行处理并不是性能关键,而且增强的可维护性和稳健性非常值得。
只要将它作为参数传递给第二个函数... –
...或者只是将各个参数(例如'argv [1]','argv [2]'等)作为单独的'const char * '参数根据需要。 –
一旦进入主char * argv []就像您创建的任何其他变量一样。你可以传递给另一个功能,甚至改变内容等。 – Itachi