Если эта строка инициализируется так, как вы ее представили (т.е. с литералом в коде), то компилятор уже разбил ее на два символа. Вы можете просто перебрать его (или извлечь значения с помощью оператора []
).
std::string a = "\x25\x12";
std::cout << a.length() << '\n'; //2
for(char c: a)
{
std::cout << static_cast<int>(c) << ' ';
}
std::cout << '\n'
<< static_cast<int>(a[0]) << ' '
<< static_cast<int>(a[1]) << ' '
Если вы читаете эту строку из любого ввода (например, стандартного ввода или файла), вам нужно будет парсит first.
В качестве примечания, реализации C ++ могут свободно выбирать любую кодировку, необязательно совместимую с ASCII (хотя я не знаю ни одного компилятора, который не использует ASCII на основекодирование)