Can I persuade operator>> in C++ to read both a hex value AND and a decimal value? The following program demonstrates how reading hex goes wrong. I’d like the same istringstream to be able to read both hex and decimal.
#include <iostream> #include <sstream> int main(int argc, char** argv) { int result = 0; // std::istringstream is("5"); // this works std::istringstream is("0x5"); // this fails while ( is.good() ) { if ( is.peek() != EOF ) is >> result; else break; } if ( is.fail() ) std::cout << "failed to read string" << std::endl; else std::cout << "successfully read string" << std::endl; std::cout << "result: " << result << std::endl; }
Use
std::setbase(0)which enables prefix dependent parsing. It will be able to parse10(dec) as 10 decimal,0x10(hex) as 16 decimal and010(octal) as 8 decimal.