我在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)
爲什麼不工作,我該如何解決它?
編輯:經過一些調試後,我發現問題來自store
行,如果這對你有任何幫助。此外,我不得不提到我嘗試使用store(..., true)
(設置unicode
到true
)
對於使用g ++ 4.9.2和Boost 1.55的我來說沒有錯誤。 – rhashimoto
我正在使用Boost 1.60.0 – Victor