2013-07-25 29 views
6

Việc tăng tùy chọn phân tích cú pháp cho phép một để gán một biến để lưu trữ các giá trị tùy chọn, thay vì sử dụng cách so_long["typing"].as<bool>():cách tự động lưu trữ giá trị của một lá cờ đơn giản vào một biến?

bool flag_value; 
entries.add_options() 
("flag", value<bool>(&flag_value), "a simple flag value"); 
...... 
cout<<"flag value is: "<<flag_value<<endl; 

Tuy nhiên, việc khai báo tùy chọn ở trên không tạo ra một lựa chọn cờ đơn giản. Nó thực sự yêu cầu bạn nhập một cái gì đó như là giá trị (--flag true | false | on | off | yes | no | 1 | 0), đó không phải là những gì tôi muốn.

Vì vậy, có cách nào lưu trữ kết quả bên trong giá trị boolean và vẫn giữ tùy chọn dưới dạng cờ đơn giản không?

Trả lời

10

Để có một tùy chọn không có giá trị (qua có nghĩa là nó được thiết lập true), bạn nên tạo ra nó như this:

options_description desc; 
desc.add_options() 
    ("help", "produce help message") 

Để sử dụng notifier cho một tùy chọn như vậy, bạn có thể sử dụng following type như ngữ nghĩa:

boost::program_options::bool_switch() 

nó có thể có giá trị true hoặc false và không có giá trị nào được thực hiện rõ ràng cho tùy chọn này từ dòng lệnh. Nếu tùy chọn được chuyển thì giá trị là true. Nếu không được chuyển - giá trị là false.

+3

không có bình luận về downvote? – Riga

+1

Có thể kẻ phản bội nghĩ bạn [nhân đôi câu trả lời khác của bạn] (http://stackoverflow.com/a/7277180/591064)? Đây là một +1 để thậm chí nó ra, câu trả lời của bạn đã giúp tôi. – ixe013

Các vấn đề liên quan