问题标签 [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.

0 投票
1 回答
98 浏览

c++ - 缓冲区如何知道在刷新操作期间要从外部文件传输多少字符?

假设我有一个输入操作:

如果 的内部缓冲区file为空underflow(),将调用将字符从外部设备导入 的内部缓冲区file。如果在此刷新操作之后缓冲区将被部分或完全填充,则由实现定义。考虑到这一点,是否有可能如果x是一个字符串并且我期望一个特定长度的输入值,那么缓冲区是否有权传输比这更少的字符?这会发生吗?

0 投票
1 回答
932 浏览

c++ - 从 ostringstream 传递到 istringstream 的技巧

我尝试制作一个压缩/解压缩模块,然后使用 istringstream 进行压缩,使用 ostringstream 进行解压缩。

我的问题是,在用压缩数据填充 istringstream 后,我无法将此流转换为 ostringstream。我尝试:

iss.rdbuf(oss.rdbuf());

作为 in 和 out 类型匹配,但它不起作用。

你有什么主意吗 ?

预先感谢。

0 投票
1 回答
273 浏览

fstream - 从 ostringstream 传递到 istringstream 和文件

我拼命尝试在 ostringstream 中写入,然后在其他对象的 istringstream 或文件中传输数据。

出于第一个目的,我尝试这样做:

但是一个简单的“iss.str()”什么都不返回。(第一个问题)

然后当我尝试时:

文件test.txt中没有写入任何内容。(第二个问题)

预先感谢您对 stringstream 和 streambuf 之间的内部关系的任何解释。

0 投票
1 回答
751 浏览

c++ - 我的溢出()的实现有什么问题?

我正在尝试实现一个流缓冲区,但我在overflow()工作时遇到了麻烦。我将缓冲区大小再调整 10 个字符并使用setp. 然后我将指针返回到我们离开的地方。由于某种原因,输出不正确:

当我打印字符串时,它显示为:

你好,你好吗?

它缺少dy。我做错了什么?

0 投票
2 回答
3941 浏览

c++ - 在 C++ 中使用多个 ofstreams 写入单个输出文件

我的班级Writer有两个ofstream成员。
两个流都与同一个输出文件相关联。我想在Writer::write方法中使用两个流,但要确保每个流都写入实际输出文件的末尾。

代码

问题

如何确保f2与 同步f1?意思是,在写入之前,流偏移量f2必须与流偏移量同步,f1反之亦然?
我不能使用函数std::ios::rdbuf因为每个都ofstream使用特殊的 derivedstreambuf。所以通过使用rdbuf()我会失去必要的功能。
我尝试使用同步流主题中的一些技术,但无法实现。

0 投票
1 回答
226 浏览

c++ - 用 std::streambuf 包装 libcurl 以进行上传?

我已经在 libcurl 周围实现了std::streambufAPI 的读取部分(即underflow()xsgetn()),以便普通人istream可以将这样的streambuf插件插入其中并从 HTTP 或 FTP 服务器检索内容。它工作得很好。

现在我想实现 API 的写入部分(即overflow()xsputn()),用于将文件上传到 FTP 服务器以执行以下操作:

问题是 libcurl 通过设置的读取回调函数使用“拉”API,CURLOPT_READFUNCTION而上面的最后一行代码是“推”的方式。

这可以工作吗?即,用streambufAPI 包装 libcurl 以进行读写

0 投票
0 回答
170 浏览

c++ - 自定义 strbuf 不会在文件中放入任何内容

我正在尝试制作一个自定义 strbuf,它接收 32 字节字符并将它们以字节为单位放入另一个 ostream 对象中。

以下是它的代码:

我个人怀疑我在 main.cpp 中链接它的方式,尽管我无法查明其中的错误。根据我的说法,ofile_cp 应该在构造过程中声明自己的缓冲区,该缓冲区应该被mybufset_rdbuf() 中的 utf32_buffer 对象替换。之后,任何 I/O 都应该通过我的缓冲区到达底层的 ofstream ofile_c1。但是,它不会在文件中打印任何内容。谁能指出这里的错误?

main.cpp(使用我的自定义 strbuf)

utf.cpp 定义了我的自定义 strbuf

0 投票
1 回答
361 浏览

c++ - 如何为我自己的类型声明自定义 char_traits<>?

我想char_traits为我自己的类型创建一个自定义类。我已经声明了所有功能,但我对标准中给出的模糊语义有些困惑。

  1. 是什么fpos_type,期望做什么off_typestate_type如果需要的话,它们在哪里需要?

  2. 标准说要保持traits::eof()和有效代码点分开,因此要求使用int_type大于char_type. 但是我可以将我的char_type作为有符号数字,我知道有效代码点仅在非负范围内。它给我留下了负值作为可能的值traits::eof()。或者它int_type应该是一个适当的超集,char_type所以没有char_type人可以取 的值eof()?更重要的是,我可以做int_typechar_type一样吗?

0 投票
1 回答
2607 浏览

c++ - 实现 std::basic_streambuf 子类来操作输入

我有一个std::basic_streambuf子类,它使所有输出都以大写形式编写,如下所示:

例如,我像这样使用它(这似乎工作正常):

我想要实现的是或多或少的相反,我想从流中读取并将所有输入转换为小写。我有以下内容:

但是,当我尝试像这样使用这个时:

结果是分段错误。我是否覆盖或调用了错误的函数?请注意,我在 C++ 方面有点新手。另请注意,我知道我可以完整地阅读输入,并在阅读后将其简单地转换为小写,但这更多是出于学习/学术目的,而不是任何实际用途。

0 投票
0 回答
657 浏览

c++ - (C++) ifstream::eof() 当 ifstream 从 boost::asio::steambuf 创建时

这是我的错误还是 boost::asio::streambuf 实现中的错误?在向下的情况下,我创建 boost::asio::streambuf 的实例,然后创建 std::istream 的实例并将 3 int 写入 streambuf。然后我需要从 streambuf 中读取 int,而它包含数据。

我不明白为什么 is.eof() 在这段代码中总是返回 false。

我写了下一个案例: