2010-04-30 5 views
7

Tôi muốn có hai lựa chọn cho chương trình để làm việc trên, địa chỉ bắt đầu và địa chỉ cuối để các tùy chọn chương trình như sau:Tôi làm cách nào để sử dụng tùy chọn tăng_đặt giá với đầu vào thập lục phân?

--start_address 0xc0000000 --end_address 0xffffffff 

Có thể cho options_description lấy hex đầu vào như vậy? Tôi có phải xem xét đầu vào là chuỗi và chuyển đổi chúng thành giá trị hex. Tôi có điều này tại thời điểm này:

po::options_description desc("Allowed options"); 

    desc.add_options() 
    ("help,h", "display this help message") 
    ("path,p", po::value<std::string>(), "Executable file path") 
    ("start_address,s", po::value<std::string>(), "Start address") 
    ("end_address,e", po::value<std::string>(), "End address") 
    ; 

Có thể boost::lexical_cast thực hiện chuyển đổi như vậy không?

Trả lời

4

ok. vừa mới phát hiện ra tôi có thể sử dụng options_description để nhập các tùy chọn và sau đó phân tích các tùy chọn bằng cách sử dụng std :: stringstream để chuyển đổi thành số hex như sau

boost::uint32_t start_address; 
    std::stringstream interpreter; 

    interpreter << std::hex << vm["start_address"].as<std::string>(); 

    interpreter >> start_address; 
+2

... nhưng làm thế nào để bạn xử lý ngoại lệ xảy ra khi bạn thử để cho phép phân tích cú pháp mặc định xảy ra? – aardvarkk