簡體   English   中英

為什么“gptr”類型為basic_streambuf char_type *而不是const char_type *?

[英]Why is the “gptr” type of basic_streambuf char_type* rather than const char_type*?

設置streambuf setg的三個“gptrs”的basic_streambuf成員聲明為:

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

我想知道:為什么每個gptr的類型都是char_type*而不是const char_type* 在這里使用const_cast為這些gpt使用const char指針是否安全?

它不是const,因為streambuf接口不知道你是如何填充緩沖區的。 例如, underflowuflow方法可以從文件或類似物中提取n個字節,並填充streambuf的現有緩沖區。 您可能還使用相同的存儲空間來讀取/寫入流的緩沖區。 streambuf是一個緩沖區,如果你願意的話就是緩存。 它位於[io]stream的格式化功能和實際的底層字符流(通常是文件)之間。 它是該底層流的窗口,重用該窗口的存儲是有意義的(這意味着它可能不是const)。

拋棄常數是否安全? 也許。 這取決於實際的streambuf實現及其使用方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM