Я пытаюсь прочитать шестнадцатеричное значение из std :: stringstream на основе примера в https://en.cppreference.com/w/cpp/io/manip/hex. Все работает нормально, когда начальный символ строки является символом цифр c [0-9], но когда главный символ является буквенным символом [af, AF], получение значения из потока потребляет символы, но не присвоить значение целому числу Есть ли флаг или что-то, что нужно установить, чтобы указать stringstream или std :: hex, что это, на самом деле, допустимое шестнадцатеричное значение и должно интерпретироваться как таковое?
Я, вероятно, просто закончу читать из потока в строку и с использованием std :: stoi, но поинтересовался, почему синтаксический анализ непосредственно из потока строк не работает или есть способ заставить его работать.
Пример кода:
#include <iostream>
#include <sstream>
#include <string>
int main()
{
int anint = 0;
std::stringstream ss;
ss.str("1234abcd");
ss >> std::hex >> anint;
printf("anint = %x\n", anint);
anint = 0;
ss.str("a234abcd");
ss >> std::hex >> anint;
printf("anint = %x\n", anint);
return 0;
}
Выходы:
anint = 1234abcd
anint = 0