基于https://en.cppreference.com/w/cpp/io/manip/hex的示例,我试图从std :: stringstream读取十六进制值。当字符串的前导字符是数字字符[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