use*_*608 3 c c++ arrays pointers program-entry-point
在c ++中,我有一个主要功能
int argc, char * argv[]
Run Code Online (Sandbox Code Playgroud)
我需要访问argv[]另一个函数中的数据(即参数).
我将声明一个全局变量,一个指向char **argv.
我该怎么做呢?
Rei*_*ica 11
在C++中,通常*最好的处理方式argv是:
int main(int argc, char **argv)
{
std::vector<std::string> args(argv, argv + argc);
}
Run Code Online (Sandbox Code Playgroud)
现在你有args一个正确构造的std::vector每个元素argv作为一个std::string.看不到丑陋的C风格const char*.
然后你可以根据需要传递这个向量或它的一些元素.
*它携带动态分配每个argv字符串的一个副本的内存和时间开销.但对于绝大多数程序而言,命令行处理对性能不是很重要,而且增加的可维护性和稳健性非常值得.
应该避免全局变量,你应该更喜欢传递参数.无论如何,你可以使用:
char **global_argv = NULL;
int main(int argc, char * argv[]){
...
global_argv = argv;
...
}
Run Code Online (Sandbox Code Playgroud)
更好的方法是:
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)
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
528 次 |
| 最近记录: |