2010-04-30 9 views
7

Voglio avere due opzioni per il programma su cui lavorare, l'indirizzo di partenza e indirizzo di fine in modo che le opzioni del programma sono le seguenti:Come utilizzare boost options_description con l'input esadecimale?

--start_address 0xc0000000 --end_address 0xffffffff 

E 'possibile per options_description a prendere tale input esadecimale? Devo considerare l'input come stringa e convertirli in valori esadecimali. Ho questo in questo momento:

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") 
    ; 

Può boost::lexical_cast fare una conversione?

risposta

4

ok. appena scoperto che posso usare options_description per accedere alle opzioni e quindi analizzare le opzioni utilizzando std :: stringstream da convertire in un numero esadecimale come segue

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

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

    interpreter >> start_address; 
+2

... ma come si fa a trattare con l'eccezione che si verifica quando si tenta lasciare che si verifichi l'analisi di default? – aardvarkk

Problemi correlati