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

标签 c++ string

我正在为我的实验室制作一个新应用程序,我必须从终端获取一些参数,我想将 **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/

相关文章:

c++ - 在字节数组中嵌入多个整数

编译中间有空终止符的 char 数组

vb.net - 为什么 String.Format 给出此字符串的 inputString 未格式化错误

ruby - 获取 Ruby 字符串中特定单词后的单词?

c++ - 区域中的最大元素

php - 初始化然后单行输出

c++ - IrrLicht - 链接器错误,重新定义

c++ - 如何在不影响 ALT+F4 或在任务栏中关闭窗口的情况下重新调整窗口的关闭按钮的用途?

c# - 在文本框中多次打印字符串 C#

javascript - 为什么一美元消失了?