我在istream
中有一些人类可读的数字数据。值范围为0-255,我想将它们存储在uint8_t
中。不幸的是,如果我尝试类似
uint8_t a, b;
stringstream data("124 67");
data >> a >> b;
然后我最终得到a == '1'
和b == '2'
。我知道在许多情况下这是理想的行为,但我希望最终得到a == 124
和b == 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
数据?
答案 0 :(得分:5)
你做不到。 uint8_t
和int8_t
分别是unsigned char
和signed char
的typedef。这些类型被iostreams视为字符类型,并且无法改变这种行为。
你的第二个例子是你能做到这一点的唯一方法。