如何将数字数据读取为uint8_t

时间:2014-08-13 02:41:44

标签: c++ iostream

我在istream中有一些人类可读的数字数据。值范围为0-255,我想将它们存储在uint8_t中。不幸的是,如果我尝试类似

的话
uint8_t a, b;
stringstream data("124 67");
data >> a >> b;

然后我最终得到a == '1'b == '2'。我知道在许多情况下这是理想的行为,但我希望最终得到a == 124b == 67。我目前的解决方法是将数据流式传输到int,然后将其复制到uint8_t

uint8_t a, b;
int a_, b_;
stringstream data("124 67");
data >> a_ >> b_;
a = a_;
b = b_;

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

1 个答案:

答案 0 :(得分:5)

你做不到。 uint8_tint8_t分别是unsigned charsigned char的typedef。这些类型被iostreams视为字符类型,并且无法改变这种行为。

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