繁体   English   中英

这段代码实际上在做什么

[英]What is this code actually doing

每个人似乎都同意这是将命令行char数组转换为字符串的正确方法。

    vector<std::string> params(argv+1, argv+argc);

但是我不太了解这里发生的情况,因为当我尝试打印argv [1]时,它只是字符串的第一个字母。 这里到底发生了什么。 是某种指针数学将您引向其余数据吗?我只是确定如何将2(argc的值)添加到argv能够仅针对一个参数获取该数组中的所有字符。

例如像这样打印argv [1]

cout << *argv[1];

返回t,它是第二个参数test.txt的第一个字母。

感谢弗雷德指出这一点

cout << argv[1];

确实返回了整个字符串,但我无法通过测试来做到这一点

cout << argv + argc;

并在参数之间移动。

看起来代码在命令行中用标记填充了向量。

该代码将std :: vector构造函数用于序列 ,并将迭代器传递到第一个参数(在程序名称之后),并传递到命令行中最后一个参数之后的参数。

要验证,请尝试以下操作:

for (unsigned int i = 0; i < argc; ++i)
{
  std::cout << "Argument [" << i << "]: " << argv[i] << std::endl;
}
std::cout << "\nFrom vector:\n"
for (unsigned int j = 0; j < params.size(); ++j)
{
  std::cout << "params[" << j << "]: " << params[j] << "\n";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM