gpt4 book ai didi

c++ - 为什么 "gptr"类型的basic_streambuf是char_type*而不是const char_type*?

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

设置流缓冲的三个“gptr”的basic_streambuf成员,setg声明为:

protected:
void setg(char_type *gback, char_type *gptr, char_type *egptr);

我想知道:为什么每个 gptr 的类型都是 char_type* 而不是 const char_type*?在这里使用 const_cast 为这些 gptrs 使用 const char 指针是否安全?

最佳答案

它不是 const,因为 streambuf 接口(interface)不知道您如何填充缓冲区。例如,underflowuflow 方法可以从文件或类似文件中提取 n 个字节,并填充 streambuf 的现存缓冲区。您也可以为读/写流流的缓冲区使用相同的存储。 streambuf 是一个缓冲区,如果你愿意的话,它是一个缓存。它介于 [io]stream 的格式化功能和实际的底层字符流(通常是文件)之间。它是底层流的一个窗口,重用该窗口的存储是有意义的(这意味着它可能不是常量)。

抛弃常量是否安全?可能是。这将取决于实际的 streambuf 实现及其使用方式。

关于c++ - 为什么 "gptr"类型的basic_streambuf是char_type*而不是const char_type*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4361926/

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