gpt4 book ai didi

c++ - 了解 std::istream::read 的设计

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:02 26 4
gpt4 key购买 nike

std::istream 具有原型(prototype) istream& read (char* s, streamsize n) actual 应该得到读取的字节数通过调用 istream::gcount()istream 的有效性也可以从 ios::good 中获知。

我正在与我的一位同事讨论我试图编写的另一个流类的实现,我说我可能会遵循这种设计;但他说与其每次都让用户调用 gcount,不如像这样读取原型(prototype) istream& read (char* s, streamsize n, size_t &bytes_read) 这样它'我会在一个电话中完成,而前者更笨拙。我无法为 std 的设计选择辩护。 istream::read 背后的真正原理是什么?

最佳答案

我认为这是因为 C++ 通常不会强制使用可能不是每个人都需要的接口(interface)。如果您要求 read 接受一些人不关心的参数,那么它会导致额外的编码工作(声明一个额外的 int 作为参数传递)。它也总是保存读取的字节,无论客户端是否关心(一些客户端可能只关心读取失败,如 eof/fail 位所示)。

使用单独的方法,您可以为可能需要或不需要的不同信息片段分离接口(interface)。

关于c++ - 了解 std::istream::read 的设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3882551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com