我正在为我的实验室制作一个新应用程序,我必须从终端获取一些参数,我想将 **args
值复制到一个字符串中,然后我必须匹配args
用于执行一些前戏操作。
我尝试构建此代码以将 **argv
值复制到字符串 var 但这是错误:
No source available for "std::string::operator=() at 0x44c1dc"
代码是这样的:
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;
}
最佳答案
我会提出这个解决方案:
std::vector<std::string> args;
std::copy(argv + 1, argv + argc, std::back_inserter(args));
引用资料:
稍微解释一下,这是从 argv[1]
复制的(我不关心 argv[0]
,因为它是“命令”,通常无关紧要用于参数处理)到 vector 中。我们在 argv[argc]
处停止复制,这是一个超出实际参数末尾的地方(这就是“结束”迭代器的工作方式)。
std::back_inserter
创建一个特殊的迭代器,用于插入容器的末尾。
关于C++:如何读取 **argv 值并复制到字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21931120/