【发布时间】:2019-07-04 17:56:15
【问题描述】:
我的理解是从stringstream 读取uint8_t 是一个问题,因为stringstream 会将uint8_t 解释为char。我想知道如何将uint8_t 从stringstream 中读取为数字类型。比如下面的代码:
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
uint8_t ui;
std::stringstream ss("46");
ss >> ui;
cout << unsigned(ui);
return 0;
}
打印出52。我希望它打印出46。
编辑:另一种方法是从stringstream 中读取string,然后将解决方案转换为uint8_t,但这会破坏良好的链接属性。例如,在我要写的实际代码中,我经常需要这样的东西:
void foobar(std::istream & istream){
uint8_t a,b,c;
istream >> a >> b >> c;
// TODO...
}
【问题讨论】:
-
读取两个字节并通过
std::stoi解析它们? -
那是丑陋的解决方案。我知道。
-
@freakish - 不是 OP,而是创建一个字符串并自己解析它而不是流(它的工作)似乎关闭了。
-
你的笔记对我来说没有意义——你可以阅读
uint16_t,将其从投射出来,再也不要使用它......当然,一些范围检查和流式传输状态也随之失效。 -
@bruno - 但是
std::uint8_t被宣传为数字类型,而不是字符,这是一个问题。
标签: c++