如何将argv向量复制到新的向量中以便修改它然后将新参数传递给函数?对不起,如果它是一个基本的东西,我不是C ++程序员。
int main(int argc, char *argv[])
{
parseCommandLine(argc, argv);
并希望:
int main(int argc, char *argv[])
{
//Here copy argv[] to argv2[] and modify argv2[0]
parseCommandLine(argc, argv2);
答案 0 :(得分:3)
如何转换argv更多c ++风格。见live demo:
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
int main( int argc, char *argv[])
{
std::vector<std::string> args(argc);
std::transform( argv, argv+argc, args.begin(),
[&]( char*arg ){ return std::string(arg); } );
std::cout << args[0];
}
答案 1 :(得分:2)
如何复制argv:
#include <iostream>
#include <cstring>
int main(int argc, char *argv[])
{
char** argv2 = new char*[argc];
for(int i=0; i<argc; ++i)
{
argv2[i] = new char[strlen(argv[i])+1];
strcpy(argv2[i],argv[i]);
}
std::cout << argv2[0] << std::endl;
//do what you want with argv2
for(int i=0; i<argc; ++i)
{
delete [] argv2[i];
}
delete [] argv2;
return 0;
}