-1

How could I copy argv vector into a new one in order to modify it and then pass new arguments to a function? Sorry if it's a basic stuff, I am not a C++ programmer.

int main(int argc, char *argv[])
{
    parseCommandLine(argc, argv);

and would like to:

int main(int argc, char *argv[])
{
    //Here copy argv[] to argv2[] and modify argv2[0]

    parseCommandLine(argc, argv2);
Jaume
  • 3,672
  • 19
  • 60
  • 119

2 Answers2

4

How to transform argv more c++ style. See 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];
}
Thomas
  • 4,980
  • 2
  • 15
  • 30
3

How to copy 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;
}
xinaiz
  • 7,744
  • 6
  • 34
  • 78