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