问题标签 [streambuf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 缓冲区如何知道在刷新操作期间要从外部文件传输多少字符?
假设我有一个输入操作:
如果 的内部缓冲区file
为空underflow()
,将调用将字符从外部设备导入 的内部缓冲区file
。如果在此刷新操作之后缓冲区将被部分或完全填充,则由实现定义。考虑到这一点,是否有可能如果x
是一个字符串并且我期望一个特定长度的输入值,那么缓冲区是否有权传输比这更少的字符?这会发生吗?
c++ - 从 ostringstream 传递到 istringstream 的技巧
我尝试制作一个压缩/解压缩模块,然后使用 istringstream 进行压缩,使用 ostringstream 进行解压缩。
我的问题是,在用压缩数据填充 istringstream 后,我无法将此流转换为 ostringstream。我尝试:
iss.rdbuf(oss.rdbuf());
作为 in 和 out 类型匹配,但它不起作用。
你有什么主意吗 ?
预先感谢。
fstream - 从 ostringstream 传递到 istringstream 和文件
我拼命尝试在 ostringstream 中写入,然后在其他对象的 istringstream 或文件中传输数据。
出于第一个目的,我尝试这样做:
但是一个简单的“iss.str()”什么都不返回。(第一个问题)
然后当我尝试时:
文件test.txt中没有写入任何内容。(第二个问题)
预先感谢您对 stringstream 和 streambuf 之间的内部关系的任何解释。
c++ - 我的溢出()的实现有什么问题?
我正在尝试实现一个流缓冲区,但我在overflow()
工作时遇到了麻烦。我将缓冲区大小再调整 10 个字符并使用setp
. 然后我将指针返回到我们离开的地方。由于某种原因,输出不正确:
当我打印字符串时,它显示为:
你好,你好吗?
它缺少d
和y
。我做错了什么?
c++ - 在 C++ 中使用多个 ofstreams 写入单个输出文件
我的班级Writer
有两个ofstream
成员。
两个流都与同一个输出文件相关联。我想在Writer::write
方法中使用两个流,但要确保每个流都写入实际输出文件的末尾。
代码
问题
如何确保f2
与 同步f1
?意思是,在写入之前,流偏移量f2
必须与流偏移量同步,f1
反之亦然?
我不能使用函数std::ios::rdbuf因为每个都ofstream
使用特殊的 derivedstreambuf
。所以通过使用rdbuf()
我会失去必要的功能。
我尝试使用同步流主题中的一些技术,但无法实现。
c++ - 用 std::streambuf 包装 libcurl 以进行上传?
我已经在 libcurl 周围实现了std::streambuf
API 的读取部分(即underflow()
和xsgetn()
),以便普通人istream
可以将这样的streambuf
插件插入其中并从 HTTP 或 FTP 服务器检索内容。它工作得很好。
现在我想实现 API 的写入部分(即overflow()
和xsputn()
),用于将文件上传到 FTP 服务器以执行以下操作:
问题是 libcurl 通过设置的读取回调函数使用“拉”API,CURLOPT_READFUNCTION
而上面的最后一行代码是“推”的方式。
这可以工作吗?即,用streambuf
API 包装 libcurl 以进行读写?
c++ - 自定义 strbuf 不会在文件中放入任何内容
我正在尝试制作一个自定义 strbuf,它接收 32 字节字符并将它们以字节为单位放入另一个 ostream 对象中。
以下是它的代码:
我个人怀疑我在 main.cpp 中链接它的方式,尽管我无法查明其中的错误。根据我的说法,ofile_cp 应该在构造过程中声明自己的缓冲区,该缓冲区应该被mybuf
set_rdbuf() 中的 utf32_buffer 对象替换。之后,任何 I/O 都应该通过我的缓冲区到达底层的 ofstream ofile_c1
。但是,它不会在文件中打印任何内容。谁能指出这里的错误?
main.cpp(使用我的自定义 strbuf)
utf.cpp 定义了我的自定义 strbuf
c++ - 如何为我自己的类型声明自定义 char_traits<>?
我想char_traits
为我自己的类型创建一个自定义类。我已经声明了所有功能,但我对标准中给出的模糊语义有些困惑。
是什么
fpos_type
,期望做什么off_type
?state_type
如果需要的话,它们在哪里需要?标准说要保持
traits::eof()
和有效代码点分开,因此要求使用int_type
大于char_type
. 但是我可以将我的char_type
作为有符号数字,我知道有效代码点仅在非负范围内。它给我留下了负值作为可能的值traits::eof()
。或者它int_type
应该是一个适当的超集,char_type
所以没有char_type
人可以取 的值eof()
?更重要的是,我可以做int_type
和char_type
一样吗?
c++ - 实现 std::basic_streambuf 子类来操作输入
我有一个std::basic_streambuf
子类,它使所有输出都以大写形式编写,如下所示:
例如,我像这样使用它(这似乎工作正常):
我想要实现的是或多或少的相反,我想从流中读取并将所有输入转换为小写。我有以下内容:
但是,当我尝试像这样使用这个时:
结果是分段错误。我是否覆盖或调用了错误的函数?请注意,我在 C++ 方面有点新手。另请注意,我知道我可以完整地阅读输入,并在阅读后将其简单地转换为小写,但这更多是出于学习/学术目的,而不是任何实际用途。
c++ - (C++) ifstream::eof() 当 ifstream 从 boost::asio::steambuf 创建时
这是我的错误还是 boost::asio::streambuf 实现中的错误?在向下的情况下,我创建 boost::asio::streambuf 的实例,然后创建 std::istream 的实例并将 3 int 写入 streambuf。然后我需要从 streambuf 中读取 int,而它包含数据。
我不明白为什么 is.eof() 在这段代码中总是返回 false。
我写了下一个案例: