如何将数字数据读取为uint8_t

Nic*_*rca 6 c++ iostream

我有一些人类可读的数字数据istream.值范围从0到255,我想存储它们uint8_t.不幸的是,如果我尝试类似的东西

uint8_t a, b;
stringstream data("124 67");
data >> a >> b;
Run Code Online (Sandbox Code Playgroud)

然后我最终a == '1'b == '2'.我知道这是许多情况下的理想行为,但我想最终得到a == 124b == 67.我目前的解决方法是将数据流式传输到ints,然后将它们复制到uint8_ts.

uint8_t a, b;
int a_, b_;
stringstream data("124 67");
data >> a_ >> b_;
a = a_;
b = b_;
Run Code Online (Sandbox Code Playgroud)

显然,这非常麻烦(而且效率稍低).是否有更简洁的方法uint8_t使用streams 读取数字(而不是字符)数据?

goj*_*oji 6

你不能.uint8_tint8_t对于类型定义unsigned charsigned char分别.这些类型被iostreams视为字符类型,并且无法改变该行为.

你的第二个例子是你能做到这一点的唯一方法.