私はUbuntu 14.04で、CMakeとCLionを使用しています。私は彼らの文書の例から取った次のコードを使用して、プログラムオプションを使用しようとしています:Boost Program_Optionsが "文字変換に失敗しました"を返します
#include <iostream>
#include <boost/program_options.hpp>
int main(int ac, char* av[]) {
namespace po = boost::program_options;
using namespace std;
po::options_description desc("Allowed options");
desc.add_options()
("help", "produce help message")
("compression", po::value<int>(), "set compression level")
;
po::variables_map vm;
po::store(po::parse_command_line(ac, av, desc), vm);
po::notify(vm);
if (vm.count("help")) {
cout << desc << "\n";
return 1;
}
if (vm.count("compression")) {
cout << "Compression level was set to "
<< vm["compression"].as<int>() << ".\n";
} else {
cout << "Compression level was not set.\n";
}
}
私はそれを実行すると、私は端末から次の出力が得られます。
$ ./bin/webserver --help
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<std::logic_error> >'
what(): character conversion failed
Aborted (core dumped)
のはなぜですそれは働かないと私はそれをどのように解決することができますか?
EDIT:いくつかのデバッグした後、私は、これはあなたのための任意のヘルプのであれば、問題は、store
とラインから来ることがわかりました。また、私は(私の場合には、バージョン1.58)プログラムオプションライブラリを使用している間、私は、コードの非常に類似した作品とまったく同じ問題に遭遇した
私にはg ++ 4.9.2とBoost 1.55を使用してもエラーはありません。 – rhashimoto
私はBoost 1.60.0を使用しています – Victor