【发布时间】:2017-09-29 20:39:50
【问题描述】:
本题旨在将std::byte 与标准输入输出结合使用。
是否有计划在未来的标准中为basic_istream<CharT> 和basic_ostream<CharT> 的接口添加适当的read(_bytes) 和write(_bytes) 函数重载?有什么理由反对它?我知道应该保留CharT*-overloads。我可以做什么来使用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>,但它缺少std::char_traits<std::byte> 等等。有人已经让这种东西工作了吗?
【问题讨论】:
-
std::byte的全部目的是去掉那种东西并将类型剥离回CHAR_BIT位的集合。您想解决什么问题,而char无法解决?请详细说明真正的问题。 “char 是否总是 1 个字节?” 是的。 -
好吧,我正在读取一个二进制文件并进行一些字节操作。然后我正在编写一个二进制文件。我认为
std::byte是合适的类型。 -
@Maikel——“做一些字节操作”中的“字节”一词与
std::byte中的“字节”不同。 -
@Maikel:不是。只需使用我们使用了数十年的相同类型即可。
-
感觉你的问题无缘无故被抛弃了。
std::byte类型旨在访问原始内存并执行按位操作(包括操作),这听起来与您想要实现的完全一样。是的,我们可以用char的流实现相同的效果,但在某些情况下std::byte会更好地模拟流内容。你不是唯一一个想知道的人:reddit.com/r/cpp/comments/fe72kp/modern_stdbyte_stream_io_for_c