Tôi sử dụng boost::program_options
để cung cấp giao diện phân tích cú pháp dòng lệnh cho ứng dụng của tôi. Tôi muốn định cấu hình để phân tích cú pháp các tùy chọn,Cách xử lý các thông số không mong muốn trong tăng cường :: program_options
using namespace boost::program_options;
options_description desc("Allowed options");
desc.add_options()
("help,h", "produce help message")
("version,v", "print the version number")
("include-path,I", value< vector<string> >(), "include path")
("input-file,i", value<string>(), "input file");
positional_options_description p;
p.add("input-file", 1);
variables_map vm;
parsed_options parsed = command_line_parser(ac, av).
options(desc).positional(p).run();
store(parsed, vm);
notify(vm);
Tôi muốn định cấu hình để mọi mã thông báo sau lần chuyển đổi cuối cùng được trả về dưới dạng vectơ. Tôi đã thử sử dụng collect_unrecognized
như ví dụ được đưa ra trong tài liệu Boost nhưng tôi đã gặp phải một số vấn đề bởi vì tôi cũng đang sử dụng đối số vị trí cho tệp đầu vào.
Về cơ bản, tôi muốn làm như thế này. Nếu tôi có:
./program -i "inputfile.abc" argument1 argument2 argument3
Tôi muốn nó để lưu trữ inputfile.abc
trong giá trị input-file
và trả về một vector<string>
của argument1
, argument2
và argument3
lập luận như mong muốn.
tôi sẽ tuy nhiên cũng thích để có thể có một cuộc tranh luận về vị trí, do đó
./program "inputfile.abc" argument1 argument2 argument3
sẽ cung cấp cho tôi những kết quả tương tự.
Tôi rất tiếc nếu điều này đã được yêu cầu và cảm ơn bạn đã trợ giúp.