返回介绍

17.5 内核格式化

发布于 2024-10-08 23:14:13 字数 2213 浏览 0 评论 0 收藏 0

iostream 族(family)支持程序与终端之间的 I/O,而 fstream 族使用相同的接口提供程序和文件之间的 I/O。C++库还提供了 sstream 族,它们使用相同的接口提供程序和 string 对象之间的 I/O。也就是说,可以使用于 cout 的 ostream 方法将格式化信息写入到 string 对象中,并使用 istream 方法(如 getline( ))来读取 string 对象中的信息。读取 string 对象中的格式化信息或将格式化信息写入 string 对象中被称为内核格式化(incore formatting)。下面简要地介绍一下这些工具(string 的 sstream 族支持取代了 char 数组的 strstream.h 族支持)。

头文件 sstream 定义了一个从 ostream 类派生而来的 ostringstream 类(还有一个基于 wostream 的 wostringstream 类,这个类用于宽字符集)。如果创建了一个 ostringstream 对象,则可以将信息写入其中,它将存储这些信息。可以将可用于 cout 的方法用于 ostringstream 对象。也就是说,可以这样做:

格式化文本进入缓冲区,在需要的情况下,该对象将使用动态内存分配来增大缓冲区。ostringstream 类有一个名为 str( ) 的成员函数,该函数返回一个被初始化为缓冲区内容的字符串对象:

使用 str( ) 方法可以“冻结”该对象,这样便不能将信息写入该对象中。

程序清单 17.21 是一个有关内核格式化的简短示例。

程序清单 17.21 strout.cpp

下面是程序清单 17.21 中程序的运行情况:

istringstream 类允许使用 istream 方法族读取 istringstream 对象中的数据,istringstream 对象可以使用 string 对象进行初始化。

假设 facts 是一个 string 对象,则要创建与该字符串相关联的 istringstream 对象,可以这样做:

这样,便可以使用 istream 方法读取 instr 中的数据。例如,如果 instr 包含大量字符格式的整数,则可以这样读取它们:

程序清单 17.22 使用重载的>>运算符读取字符串中的内容,每次读取一个单词。

程序清单 17.22 strin.cpp

下面是程序清单 17.22 中程序的输出:

总之,istringstream 和 ostringstream 类使得能够使用 istream 和 ostream 类的方法来管理存储在字符串中的字符数据。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文