私はプログラムオプションを正しく動作させるために苦労しています。私は、ターミナルウィンドウ(Linux)から値をとるオプションの引数を使って自分のプログラムを起動できる必要があります。私が何をしても、これはうまくいかないでしょう。私は端末からどのような値を入力しても、デフォルト値を返しただけです。さらに、私は私のterminaコマンドでオプションが含まれていなかったならば、それはC++のプログラムオプションを常にデフォルト値に設定する
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injec tor<std::logic_error> >'
what(): character conversion failed
Aborted (core dumped)
で返されたので、私はそれが私が間違って行っていたものだったかどうかを確認するために、インターネット上で最小限の例を見つけました。
#include <iostream>
#include <boost/program_options.hpp>
namespace po = boost::program_options;
int main (int argc, char* argv[]) {
po::options_description desc("Usage");
desc.add_options()
("robots", po::value<int>()->default_value(3),
"How many robots do you want to send on a murderous rampage?");
po::variables_map opts;
po::store(po::parse_command_line(argc, argv, desc), opts);
try {
po::notify(opts);
}
catch (std::exception& e) {
std::cerr << "Error: " << e.what() << "\n";
return 1;
}
int nRobots = opts["robots"].as<int>();
// automatically assigns default when option not supplied by user!!
std::cout << nRobots << " robots have begun the silicon revolution"
<< std::endl;
return 0;
}
しかしこれはまったく同じことをして、私はこれはブーストのバグ(そう、私は推測する)か何かのどちらかだと思うし始めています:ここで私はそれは私が必要とする同様のことをした例がありますそれが好きではない私のシステムについて?
誰かが間違っているかもしれない何かをヒントできますか?ありがとう
これは私のために正しく動作します。再現可能な例が実際に*問題のエラーを再現することを確認してください。 – nrussell
あなたのコードはここにあります(http://coliru.stacked-crooked.com/a/8b1c8b420b7e58a2)。 – chris
@nrussell 私の記事で述べたように、そのコードは自分のマシン上でエラーを再現し、私のバージョンのBoost(v1.60)や私のシステム上のバグだと思われます。少なくとも今はコードが動作することを知っています、ありがとうございます。 – ppyvabw