C++:如何读取**argv值并复制到字符串中

0 c++ string

我正在为我的实验室制作一个新的应用程序,我必须在表单终端中使用一些参数,并且我想将**args值复制到一个字符串中,之后我必须匹配argsfor执行一些前戏操作.

我尝试构建此代码以将**argv值复制到字符串var中,但这是错误:

No source available for "std::string::operator=() at 0x44c1dc" 
Run Code Online (Sandbox Code Playgroud)

代码是这样的:

 int main(int argc, char **argv)
 {
     string args[argc-1];
 int j=0;
 for(int i=2; i<argc-1;i++)
 {
    j=0;
    while(argv[i][j]!='\0')
    {
        args[i]=args[i]+argv[i][j];
        j++;
    }
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)

Som*_*ude 8

我会建议这个解决方案:

std::vector<std::string> args;
std::copy(argv + 1, argv + argc, std::back_inserter(args));
Run Code Online (Sandbox Code Playgroud)

参考文献:


为了解释一下,这个副本argv[1](我不关心argv[0]它是"命令",通常与参数处理无关)到向量中.我们停止复制argv[argc]超出实际参数末尾的复制(这是"结束"迭代器的工作方式).

std::back_inserter 创建一个特殊的迭代器,用于在容器的末尾插入广告.

  • 为什么不使用向量的`begin,end`构造函数?(4 [here](http://en.cppreference.com/w/cpp/container/vector/vector)) (4认同)

TNA*_*TNA 5

使用范围构造器的最快和最短的解决方案:

std::vector<std::string> args(argv + 1,argv + argc);
Run Code Online (Sandbox Code Playgroud)