命令行参数问题

时间:2012-07-13 16:17:24

标签: c++ command-line-arguments

我正在尝试在我的代码中实现命令行选项。出于某种原因,我的-a选项可以正常工作,但我的-c选项不能很好地工作,即使它们基本相同。当我尝试使用-c选项运行代码时,收到以下消息。

terminate called after throwing an instance of 'std::logic_error'
what():  basic_string::_S_construct NULL not valid
Aborted

以下是我的代码。

int c;
std::string config = def+std::string("SamplesConfig.xml");
std::string cal = def+std::string("calibration.bin");
while ((c = getopt(argc, argv, "a:c"))>=0)
{
    switch(c)
    {
        case 'a':
        {
            config = std::string(optarg);
            printf("%s", (char *)config.c_str());
            break;
        }
        case 'c':
        {
            cal = std::string(optarg);
            printf("%s", (char *)cal.c_str());
            break;
        }
        default:
        {
            break;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

你不应该打电话给getopt(" a:b:c:")?我想,当你指定了c时,optarg在到达那一点时将为null。