0

コードにコマンドラインオプションを実装しようとしています。何らかの理由で、私の-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;
        }
    }
}
4

1 に答える 1

0

getopt( "a:b:c:")を呼び出すべきではありませんか?cだけを指定したので、その時点でoptargはnullになると思います。

于 2012-07-13T16:42:46.200 に答える