此问题旨在将std::byte
与标准输入输出结合使用。
是否有计划在未来的标准中为read(_bytes)
和write(_bytes)
的{{1}}和basic_istream<CharT>
接口添加适当的函数重载?有什么理由反对呢?我知道应该保留basic_ostream<CharT>
- 重载。如何使用CharT*
?我目前在我的项目函数中定义
std::byte
这些使用std::istream& read(std::istream&, std::byte*, std::streamsize)
std::ostream& write(std::ostream&, const std::byte*, std::streamsize)
到reinterpret_cast<>
。 char*
但我认为这取决于const char*
的大小。我错了吗? char
总是char
吗?
我尝试制作1 byte
,但缺少std::basic_istream<std::byte>
等等。有人做过这种事吗?
答案 0 :(得分:7)
<强>唐&#39;吨强>
您是否以&#34;文字模式&#34;或者&#34;二进制模式&#34;,你还在做什么从根本上是对字符采取行动。
std::byte
不是出于此目的,而且这就是为什么它没有这些功能。实际上,它是故意引入而不是来拥有它们!
enum class byte : unsigned char {} ;
(自C ++ 17起)
std::byte
是一个独特的类型,它实现了C ++语言定义中指定的byte概念。与
char
和unsigned char
类似,它可用于访问其他对象(object representation)占用的原始内存,但与这些类型不同,它不是字符类型,不是算术类型。一个字节只是一个位集合,只为它定义了按位逻辑运算符。
有没有人让这种事情发挥作用?
不,如上所述,每个人都故意没有。
使用char
或unsigned char
,就像我们已经做了几十年一样!
答案 1 :(得分:0)
P2146: Modern std::byte stream IO for C++是与您的请求有关的建议。在Github上跟踪状态。