“内部”与“关联”流缓冲区之间的区别

2024-01-07

From http://www.cplusplus.com/reference/ios/ios/rdbuf/ http://www.cplusplus.com/reference/ios/ios/rdbuf/:

一些派生流类(例如 stringstream 和 fstream)维护自己的内部流缓冲区,它们与构造相关。调用该函数可以改变关联流缓冲区对此没有影响内部流缓冲区:该流将有一个关联流缓冲区这不同于它的内部流缓冲区(尽管流上的输入/输出操作总是使用关联流缓冲区,由该成员函数返回)。

And on http://www.cplusplus.com/reference/fstream/ifstream/rdbuf/ http://www.cplusplus.com/reference/fstream/ifstream/rdbuf/:

返回一个指向内部文件缓冲区对象.

但请注意,这不一定与当前的相同关联流缓冲区(由 ios::rdbuf 返回)。

那么如果内部缓冲区不用于输入和输出操作,它有什么用呢?如果这意味着这两行可以返回两个不同的对象,那么为什么这会有用呢?

std::stringstream ss;
ss.rdbuf();                          // (1) returns "internal" stream buffer?
static_cast<std::ios&>(ss).rdbuf();  // (2) returns "associated" stream buffer?

内部缓冲区用于输入和输出操作,直到调用为止rdbuf还有一些其他的论点。然后它就坐在那里。

您可以随时通过致电重新启用它

stream.basic_ios::rdbuf(stream.rdbuf());

请注意,例如内部缓冲区std::fstream总是一个std::filebuf由流对象拥有和管理的对象,而关联的缓冲区可以是任何streambuf派生对象。该流仅存储指向它的基类指针,并且不管理其生命周期。

另请注意,该标准未使用术语“内部缓冲区”。该标准使用了一些不同的术语:

班上basic_ifstream<charT, traits>支持读取命名文件。它使用一个basic_filebuf<charT, traits>对象来控制关联的序列。为了便于说明,此处将维护的数据表示为:

sb, the filebuf object.

上面的“维护数据”就是 cplusplus.com 所说的“内部流缓冲区”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“内部”与“关联”流缓冲区之间的区别 的相关文章

  • InvalidOperationException - 对象当前正在其他地方使用 - 红十字

    我有一个 C 桌面应用程序 其中我连续创建的一个线程从源 实际上是一台数码相机 获取图像并将其放在 GUI 中的面板 panel Image img 上 这必须是另一个线程 如它是控件的代码隐藏 该应用程序可以工作 但在某些机器上 我会在随
  • 每个托管线程是否都有自己对应的本机线程?

    我想知道是否在 Net 中创建托管线程 通过调用Thread Start 导致在后台创建一个本机线程 那么托管线程是否有对应的本机线程呢 如果是 当托管线程等待或睡眠时 是否意味着相应的本机线程也在等待或睡眠 是的 NET 线程映射到所有当
  • 如何在 .NET Framework 2.0 中模拟“Func<(Of <(TResult>)>) 委托”?

    我尝试使用这个类代码项目文章 http www codeproject com KB threads AsyncVar aspx在 VB NET 和 NET Framework 2 0 中 除了这一行之外 所有内容似乎都可以编译Privat
  • 如何让 Swagger 插件在自托管服务堆栈中工作

    我已经用 github 上提供的示例重新提出了这个问题 并为任何想要自己运行代码的人提供了一个下拉框下载链接 Swagger 无法在自托管 ServiceStack 服务上工作 https stackoverflow com questio
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 由 IHttpClientFactory 注入时模拟 HttpClient 处理程序

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • 在 Visual Studio 2010 中从 Fortran 调用 C++ 函数

    我想从 Fortran 调用 C 函数 为此 我在 Visual Studio 2010 中创建了一个 FORTRAN 项目 之后 我将一个 Cpp 项目添加到该 FORTRAN 项目中 当我要构建程序时出现以下错误 Error 1 unr
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • C#:帮助理解 UML 类图中的 <>

    我目前正在做一个项目 我们必须从 UML 图编写代码 我了解 UML 类图的剖析 但我无法理解什么 lt
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • 为什么 gcc 抱怨“错误:模板参数 '0' 的类型 'intT' 取决于模板参数”?

    我的编译器是gcc 4 9 0 以下代码无法编译 template
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • C++ 函数重载类似转换

    我收到一个错误 指出两个重载具有相似的转换 我尝试了太多的事情 但没有任何帮助 这是那段代码 CString GetInput int numberOfInput BOOL clearBuffer FALSE UINT timeout IN
  • System.IO.FileNotFoundException:找不到网络路径。在 Windows 7 上使用 DirectoryEntry 对象时出现异常

    我正在尝试使用 DirectoryEntry 对象连接到远程 Windows 7 计算机 这是我的代码 DirectoryEntry obDirEntry new DirectoryEntry WinNT hostName hostName
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看

随机推荐

  • 我可以使用 OAuth 令牌作为 Ocp-Apim-Subscription-Key 的替代品吗?

    我正在考虑使用 Azure API 管理为许多后端 API 提供一致的前端 大多数 API 使用 OAuth 2 0 应用程序流程 ClientID 客户端密钥 后端 API 检查声明 范围 进行保护 这很好用 但是当客户通过 APIM 使
  • ORM vs 传统数据库查询,它们的字段是什么?

    ORM 似乎是一个快速发展的模型 有利也有弊 来自 Richard Kiessig 的超快速 ASP NET http www amazon com Ultra Fast ASP NET Build Ultra Scalable Serve
  • QSocketNotifier:无法从另一个线程启用或禁用套接字通知程序

    我尝试使用 QT 构建一个多线程游戏服务器 因此 每个客户端都是一个基于 QThread 的独立线程 现在我需要将数据发送到同一游戏室中的其他客户端 在其他线程中 例如 当房主关闭游戏房间时 游戏服务器需要向同一 soom 中的其他客户端发
  • 如何检查 Linux 上进程的堆大小

    我正在编写一些代码 但它一直崩溃 后来在挖掘转储后 我意识到我超出了最大堆限制 如果我添加了对 malloc 的检查 生活会更容易 尽管我修复了这个问题 有什么方法可以增加我的堆大小吗 PS 相当类似的问题 https stackoverf
  • 未根据标记名对博客详细信息进行分组

    我正在尝试分组blogdetails基于tagname 单击第二个加号按钮时 想要将每个标记名下的所有博客详细信息分组 目前 它忽略分组并仅显示标记名 有人可以告诉我这里可能有什么问题吗 我添加了代码沙箱链接以供参考 https codes
  • 在 Mongo 中存储嵌套类别(或分层数据)的最有效方法?

    我们为多种产品提供了嵌套类别 例如 体育 gt 篮球 gt 男子 体育 gt 网球 gt 女子 并使用 Mongo 而不是 MySQL 我们知道如何在 MySQL 等 SQL 数据库中存储嵌套类别 但如果您能提供有关如何对 Mongo 执行
  • 如何向 html 表格添加 jQuery 过滤器?

    我正在尝试使用 JQuery 将下拉过滤器放入 html 表中 这是代码 报告 php table class table table striped thead tr th th th First Name th th Last Name
  • 从 JavaScript 函数对象的名称获取字符串形式?

    在 JavaScript 中 如果变量中有一个字符串 有没有办法获取对具有匹配名称的函数对象的引用 请注意 我可以使用 jQuery 因此我也可以使用它的任何辅助方法 例如 myFunction function var func name
  • 是否可以只需要测试而不需要安装包?

    我正在向现有的可安装 pip 的项目添加功能 项目所有者认为我的添加pandas对 setup py 的安装要求 太重 因为该项目应该保持苗条 我添加的功能不需要pandas 因为该功能是在pandas DataFrame对象 但我为它编写
  • 如何在 ActionBarSherlock 中实现多选和上下文 ActionMode?

    我应该如何使用 ActionBarSherlock 在 AdapterView 上实现多选 因为它不提供 MultiChoiceModeListener 这就是它的样子 你怎么能这样做呢 这就是我所做的 编辑 自从我发现之前的答案有很多无用
  • Node.js Firestore 查询选择字段路径列表

    我尝试创建并返回一个新的 Query 实例 该实例将字段掩码应用于结果并仅返回指定的字段子集 当我使用时 let query firestore collection col select field1 field2 field3 get
  • ANDROID_HOME 未设置(VSTS 代理在 OS X 上作为服务运行)

    我已经在 MacBook Pro 上配置了 VSTS 代理 当我手动运行它时 使用 run sh 但是 当我将 VSTS 代理配置为作为服务运行时 使用 svc sh install and svc sh start 并在 VSTS 中对新
  • Fabric.js + 谷歌字体

    可以用吗Fabric js https github com kangax fabric js wiki How to render text使用网络字体 而不附加 Cufon 库及其字体 我可以使用标准画布功能轻松做到这一点 所以我想知道
  • 如何将 Nullable DateTime 变量的 null 值转换为 DbNull.Value

    我有一个可为空的日期时间变量 我想将它写入 SQL DB 当我尝试插入时 如果变量有值就没有问题 但如果它没有值 插入就会因错误而中断 我想问 如何通过DbCommand参数向Sql插入可为空的DateTime P S Sql 列也可以为空
  • onStartJob 和 onStopJob 无法在 android 中运行后台线程

    实际上我想使用 JobScheduler 进行通知 无论应用程序是否处于活动状态 我是 android 新手 首先只是尝试运行后台 AsyncTask 来检查它是否工作正常 但它不起作用 这是我的 JobService 代码 public
  • PyCharm - 作者是否出现在导入之前?

    当您创建新的 python 文件并添加新的导入时 PyCharm 会尽可能自动添加导入和 author 标签 但是 默认情况下 author 标签将始终出现在任何导入的下方 在我看来 author 标签应该位于文件的顶部 我也可以在其中放置
  • 在 RoR 中哪里可以重新开放课程

    我正在尝试重新打开StringRails 中的类并添加更多方法供我的应用程序使用 编写代码不是问题 我的问题是该代码应该放在哪里 对我来说 在不同的模型文件中重新打开一个类是没有意义的 因为它实际上与任何模型都没有任何关系 我想也许在某个地
  • LINQ - 组合多个列表以形成一个新列表并按键对齐它们?

    我有两个不同列的列表 但每个列表都有一个具有相同键的公共列 如何将它们组合成一个新列表 即 public class TradeBalanceBreak public int CommID get set public int CPFirm
  • 如何防止 Vue 中的对话框完成之前选择表单被更改

    我有一个包含各种选项的选择字段 当用户单击该字段来更改当前选择时 我需要启动一个提示 让用户确认他们希望继续更改 因为这将需要他们重做一个漫长的过程 如果他们取消更改 则需要防止所选选项发生更改 因为即使是快速的临时更改也会触发客户端上的自
  • “内部”与“关联”流缓冲区之间的区别

    From http www cplusplus com reference ios ios rdbuf http www cplusplus com reference ios ios rdbuf 一些派生流类 例如 stringstrea