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