[英]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.