- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以这个简单的示例程序为例:
// main.cpp
#include <iostream>
#include <fstream>
int main(int argc, const char *argv[])
{
using namespace std;
fstream infile("main.cpp");
basic_streambuf<char> *buf = infile.rdbuf();
cout << static_cast<void *> (buf) << endl;
cout << buf;
}
为了打印basic_streambuf<>
的实际地址object 我必须明确地将它转换为 void *
.所以主要问题是,为什么 C++ 对待 basic_streambuf<>
就像是某种 const char *
?是否发生了某种隐式转换或者这是什么黑巫术?
检查常见的在线引用资料,例如 cplusplus和 en.cppreference没有显示 std::basic_streambuf
提供任何公共(public)转换运算符。我忽略了什么吗?
最佳答案
http://www.cplusplus.com/reference/ostream/ostream/operator%3C%3C/
ostream& operator<< (streambuf* sb );
Retrieves as many characters as possible from the input sequence controlled by the stream buffer object pointed by sb (if any) and inserts them into the stream, until either the input sequence is exhausted or the function fails to insert into the stream.
http://www.cplusplus.com/reference/streambuf/streambuf/
It is an instantiation of basic_streambuf with the following template parameters: charT = char
关于c++ - 为什么将 std::basic_streambuf* 插入 ostream 会插入缓冲区内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18221557/
我正在阅读 C++ 11 标准。 27.6.3.4.3/7 和 27.6.3.4.5/3 部分描述了函数“int_type underflow();”和“int_type overflow(int_t
我正在开发一个 basic_streambuf 来处理从/到 Winsock 套接字的读取和写入。就像 basic_filebuf 一样,我在内部使用 std::codecvt 对象将从底层套接字读取
我的问题如下:Martin York this 中的 claim , this , 和 this回答可以使用 basic_stringbuf::pubsetbuf 像这样从一段内存中读取 string
如果你看在VS2010的头文件中你会看到这个成员函数的定义为 pos_type pubseekoff(off_type _Off, ios_base::seekdir _Way,
注意:根据回复进行编辑以获得更合适的答案。 我有一个多年来制作的 C++ 模板集合,我称之为 Joop。它主要包括不完全属于“通用”类别但足够有用以至于我一直将它们放入不同项目的库,因此它们中的大多数
我有一个项目需要我将过滤器插入流中,以便根据过滤器修改传出数据。经过一些研究,似乎我想要做的是像这样创建一个 filtered_streambuf: template class filtered_
我想编写一个我自己的日志记录库,为日志条目发送到的任何地方提供抽象。 C++ 的 IO 库已经通过 std::stringstream 和 std::fstream 提供了这种抽象。我还希望能够从套接
我想继承std::basic_streambuf实现基于 TCP 连接的流缓冲区。我不明白指针的作用 eback, gptr, egptr, pbase, pptr, epptr .我将流缓冲区视为一
我有一个 std::basic_streambuf 子类,它导致所有输出都以大写形式写入,如下所示: class upper_streambuf : public std::streambuf {
我已经多次看到有关创建自定义流缓冲区的说明:您需要做的就是实现 overflow , underflow , 和 pbackfail正确地在 std::basic_streambuf 的后代中您可以创
好吧,我现在非常困惑;什么时候有人会在流上使用流缓冲区 - 或者以其他方式? 阅读 cppreference一些关于此的在线主题只会增加困惑。在我看来,std::basic_istream 是缓冲区的
我正在检查 std::basic_streambuf 类中的函数 setg()。它在文件 streambuf 中定义。 gcc版本是5.4.0 我使用的编译选项是-std=gnu++14 void s
根据 libstdc++ c++11 status page , 流缓冲区被标记为已完成。 查看 然而,gcc 4.8 附带的构造函数和复制构造函数是 private (第 799 行)。根据§ 27
我在读取通过 asyc_read() 填充的 streambuf 时遇到了一些问题。在 VS 中单步执行我的代码时,我可以看到缓冲区中有正确的数据,但是当我去读取它时: std::istream is
以这个简单的示例程序为例: // main.cpp #include #include int main(int argc, const char *argv[]) { using names
C++ 标准说 ($27.6.3.4.2) std::basic_streambuf::seekoff 和 std::basic_streambuf::seekpos 的效果都定义了分别为派生自 st
这个问题可能很愚蠢,但这是我第一次接触 gcc 文档。 我知道basic_streambuf::pubseekoff() 是模板类basic_streambuf 的公共(public)成员函数,但它没
27.6.3.4.2 Buffer management and positioning pos_type seekoff(off_type off, ios_base::seekdir way,
想必这些名字现在为了兼容性而卡住了,但为什么最初没有给它们起相似的名字呢? gptr()/pptr() 和egptr()/epptr() 是一致的,但是 eback() 特别令人困惑,gbase()
vt.给出。基本上,我正在寻找的是避免做(1)语句,因为它看起来不整洁。。另一种(近似的)解决方法是getline,但它不像stringbuf那样动态分配,因为它需要一个固定大小的缓冲区,所以在使用s
我是一名优秀的程序员,十分优秀!