C ++ - 接受命令行参数?

时间:2012-12-18 06:23:47

标签: c++

所以这是我的原始代码:

#include <iostream>

using namespace std;

int main ()
{
    float x;  
    cout << "Please enter an integer value: ";
    cin >> x;

    if ((x >= 100) && (x < 200)) {
        cout << "split";
    } else if (x == 0 ||x == 1 ) {
        cout << "steal";
    } else {
        cout << "split";
    } 

    system("pause");
}

它完美无缺,但我需要它以这种方式运行:

C:\> program.exe 109

它会显示109并提供输出 - "steal"

C:\> program.exe 0.5

它会显示0.5,并为我提供输出"split"

我需要添加到原始代码才能执行此操作?

3 个答案:

答案 0 :(得分:5)

将您的主页改为

int main (int argc, char** argv)

您可以在argc中查看指定参数的数量,在char *中查看值(argv)。您可以使用std::stof

将该值转换为浮动
float x = 0.0f;
if (argc > 1) {
    x = std::stof(argv[1]);
} else {
    std::cerr << "Not enough arguments\n";
    return 1;
}

请注意,程序的第一个参数是可执行文件本身的名称(在您的情况下为program.exe),因此您需要检查至少两个参数。

参考文献:http://en.cppreference.com/w/cpp/string/basic_string/stof

答案 1 :(得分:0)

您可以使用命令行参数执行此操作。这是主要功能的格式:

int main (int argc, _TCHAR* argv[])
{
}

此处argc表示参数数量(在您的情况下返回2,program.exe 0.5)

argv代表两个字符串。第一个包含program.exe,第二个包含0.5

这样你可以解决问题

答案 2 :(得分:0)

我们能否更清楚地解决这个问题?您想知道如何使用命令行参数执行代码吗?在这种情况下,它是:

int main (int no_of_args, char* arglist[])
{
}

argList中,第一项保存可执行文件的名称,后续项目保存所提供的输入。