![](/img/trans.png)
[英]invalid conversion from 'const char*' to 'std::basic_ostream<char>::char_type {aka char}'
[英]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
接口不知道你是如何填充緩沖區的。 例如, underflow
和uflow
方法可以從文件或類似物中提取n個字節,並填充streambuf的現有緩沖區。 您可能還使用相同的存儲空間來讀取/寫入流的緩沖區。 streambuf是一個緩沖區,如果你願意的話就是緩存。 它位於[io]stream
的格式化功能和實際的底層字符流(通常是文件)之間。 它是該底層流的窗口,重用該窗口的存儲是有意義的(這意味着它可能不是const)。
拋棄常數是否安全? 也許。 這取決於實際的streambuf實現及其使用方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.