Думаю, я бы сделал что-то вроде этого:
std::getline(cin, your_string);
if (your_string.find_first_not_of("0123456789abcdefABCDEF") != std::string::npos)
error("Non-hexadecimal input");
else {
std::istringstream is(your_string);
is >> std::hex >> address1;
}
Вариантов много, но я бы выполнил три шага:
- читать всю строку,
- подтвердить это
- конвертировать, если хорошо.