簡體   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