私はC++を初めて使っています。メインのエミュレートargvからargvではなく配列iをパースするためのboostコマンドラインを取得
コマンドラインプログラムでboost program_optionsとcommandline parserを使用しようとしています。プログラムはgetlineを使用して、ユーザーが入力したコマンドを取得します。私はそれを解析してブーストに渡すことができますが、タイプを正しく得ることはできません。私はまだポインターやジャズを正しく学んでいますが、苦労しています。
は、ここでは、私が何をしようとしているのアイデアを得ることができるようにコードです:
namespace po = boost::program_options;
int _tmain(int argc, _TCHAR* argv[])
{
std::string input;
_TCHAR* parsedInput[20];
while (std::cin) {
std::getline(std::cin, input);
boost::split(parsedInput, input, boost::is_any_of(" "), boost::token_compress_on);
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(5, parsedInput, desc), vm);
po::notify(vm);
if (vm.count("help"))
std::cout << desc << "\n";
}
return 0;
}
po::store(po::parse_command_line(5, parsedInput, desc), vm);
5私はこの仕事をするためにしようとしているだけの間、任意です。
コードでは私の問題点は完全にはわかりませんが、入力を分割することと実際には関係があると思いますが、これは現在のエラーメッセージerror C2078: too many initializers
です。
私はもともと入力を文字列のベクトルに分割していましたが、それは私にそのエラーを受けさせましたが、間違った型を取ってpo::parse_command_line(5, parsedInput, desc)
に問題がありました。場合のように思われるdocumentationを見た後。
誰かが私に手を差し伸べるか、正しい方向に向けると感謝します。ありがとうございました。
私はあなたが何を乗り越えているのか分かりません'parse_command_line'は' vector'を取りません。これは間違った経路であるため、最初に試行したものを投稿する方が良いかもしれません。 – user4581301
'_TCHAR'が何か親切なものとして定義されていると仮定すると、典型的な用法は' parse_command_line(argc、argv、desc) 'でしょう。詳細はこちら:[_TCHAR *をchar *に変換する](https://stackoverflow.com/questions/19301538/converting-tchar-to-char) – user4581301