簡體   English   中英

命令行 Arguments 帶“-”前綴

[英]Command Line Arguments With “-” Prefix

我正在嘗試編寫一個程序,我可以從自定義 arguments 開始。 就像在這個例子中“program.exe -width 1920 -height 1080”一樣。 我寫了一個簡單的代碼,它應該可以工作。

#include <iostream>

int main(int argc, char* argv[])
{
    for (int i = 1; i < argc; i++)
    {
        if (argv[i] == "-width")
        {
            std::cout << "Width: " << argv[++i] << "\n";
        }
        else if (argv[i] == "-height")
        {
            std::cout << "Height: " << argv[++i] << "\n";
        }
    }

    return 0;
}

而且這個程序不起作用。 它沒有顯示任何東西。 我還嘗試使用調試器逐行檢查此代碼,但是當argv[i] == "-width"它只是跳過它。

有沒有辦法解決它,或者只有其他一些方法可以做到這一點?

您正在比較指針,而不是字符串。 要通過==比較字符串,您應該使用std::string

您還應該檢查元素argv[++i]是否存在。

#include <iostream>
#include <string>

int main(int argc, char* argv[])
{
    for (int i = 1; i < argc; i++)
    {
        if (argv[i] == std::string("-width") && i + 1 < argc)
        {
            std::cout << "Width: " << argv[++i] << "\n";
        }
        else if (argv[i] == std::string("-height") && i + 1 < argc)
        {
            std::cout << "Height: " << argv[++i] << "\n";
        }
    }

    return 0;
}

也可以使用 s 后綴

cout << ("wilson" == "wilson"s) << endl;

output:

1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM