C++ primer plus 第17 章 输入、输出和文件:文件输入和输出05:文件模式:内核格式化

news2024/12/23 16:16:23

C++ primer plus 第17 章 输入、输出和文件:文件输入和输出05:文件模式:内核格式化

C++ primer plus 第17 章 输入、输出和文件:文件输入和输出05:文件模式:内核格式化
17.5 内核格式化
程序清单 17.21 strout.cpp

文章目录

  • C++ primer plus 第17 章 输入、输出和文件:文件输入和输出05:文件模式:内核格式化
  • 17.5 内核格式化
  • 程序清单 17.21 strout.cpp
  • 程序清单 17.22 strin.cpp


17.5 内核格式化

iostream 族(family)支持程序与终端之间的 1/0,而fstream 族使用相同的接口提供程序和文件之间的I/0。C++库还提供了sstream 族,它们使用相同的接口提供程序和string对象之间的1/0。也就是说,可以使用于cout 的 ostream 方法将格式化信息写入到string对象中,并使用istream方法(如 getine())来读取string 对象中的信息。读取string对象中的格式化信息或将格式化信息写入string对象中被称为内核格式化(incore formating)。下面简要地介绍一下这些工具(string的sstream 族支持取代了 char 数组的 strstream.h族支持)。
头文件 sstream定义了一个从ostream类派生而来的ostringstream类(还有一个基于 wostream 的wostringstrcam 类,这个类用于宽字符集)。如果创建了一个 ostringstrcam 对象,则可以将信息写入其中,它将存储这些信息。可以将可用于cout 的方法用于ostringstream 对象。也就是说,可以这样做:

ostringstream outstr;
double price :380.0:
char *ps ="for a copy of the ISO/EIC C++ standard!";
outstr.precision(2);
outstr <s fixed;
outstr <<"Pay onlyCHF << price << ps << endl;

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

string mesg :outstr.str();//returns string with formatted information

使用 str()方法可以“冻结”该对象,这样便不能将信息写入该对象中。程序清单17.21是一个有关内核格式化的简短示例。

程序清单 17.21 strout.cpp


// strout.cpp -- incore formatting (output)
#include <iostream>
#include <sstream>
#include <string>
int main()
{
    using namespace std;
    ostringstream outstr;   // manages a string stream

    string hdisk;
    cout << "What's the name of your hard disk? ";
    getline(cin, hdisk);
    int cap;
    cout << "What's its capacity in GB? ";
    cin >> cap;
    // write formatted information to string stream
    outstr << "The hard disk " << hdisk << " has a capacity of "
            << cap << " gigabytes.\n";
    string result = outstr.str();   // save result
    cout << result;                 // show contents

    // cin.get();
	// cin.get();
    return 0; 
}

在这里插入图片描述
istringstream 类允许使用 istream 方法族读取 istringstream 对象中的数据,istringstream 对象可以使用string 对象进行初始化。
假设 facts 是一个 string对象,则要创建与该字符串相关联的istringstream 对象,可以这样做:

istringstream instr(facts);//use facts to initialize stream

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

int n:
int sum =0i
while(instr >> n)
Sum += n:

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

程序清单 17.22 strin.cpp

// strin.cpp -- formatted reading from a char array
#include <iostream>
#include <sstream>
#include <string>
int main()
{
    using namespace std;
    string lit = "It was a dark and stormy day, and "
                 " the full moon glowed brilliantly. ";
    istringstream instr(lit);   // use buf for input
    string word;
    while (instr >> word)       // read a word a time
        cout << word << endl;
    // cin.get();
    return 0;
}

在这里插入图片描述
总之,istringstream 和ostringstream 类使得能够使用istream 和 ostream 类的方法来管理存储在字符串
中的字符数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1988313.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第41届CCF

第41届CCF中国数据库学术会议 NDBC2024中国乌鲁木齐 《电信领域数据库新需求与挑战》分论坛介绍 2024年08月09日上午09:00-12:30 电信领域进入算力网络时代,数据库国产化需求迫切,对数据库可用性、扩展性、一体化、多模、跨域传输和调度等提出新的要求。基于此,本论坛重点讨…

UE5 右键菜单缺少Generate Visual Studio project files

前言 在安装完毕 ue5 后&#xff0c;看到别人右键菜单有 多出来的三个选项 &#xff0c;但是我却没有&#xff0c;如下图&#xff1a; 解决方式 1、在 “C:\Program Files (x86)\Epic Games\Launcher\Engine\Binaries\Win64” 路径下有 UnrealVersionSelector.exe 文件。 …

fme从json中提取位置到kml中

fme从json中提取位置到kml中 简单参考,我自己要用的,越弄越复杂。 概述-模板总体结构 数据就是官方提供的数据,模板的基本节结构是读模块+转换器+写模块,最近爬取一些json文件,用到了。 1.使用json读模块读取数据 首先检查一下源数据 使用文本打开数据集,可以看到非缩…

压电雨量传感器的工作原理

型号推荐&#xff1a;云境天合TH-Y1】压电动能式雨量计通过雨滴撞击传感器产生的微小形变&#xff0c;将机械能转化为电能。这种转化过程基于压电效应&#xff0c;即某些材料在受到压力作用时会产生电荷&#xff0c;从而产生电信号。雨滴撞击传感器时&#xff0c;传感器发生形变…

写给大模型新人的经验,刷到少走三年弯路!

这篇文章&#xff0c;我将结合自己在大模型领域的经验&#xff0c;给大家详细聊聊新人应该如何转行大模型赛道&#xff1f; 比如大模型都有哪些方向&#xff1f;各方向的能力要求和岗位匹配&#xff1f;新手转行大模型常踩的坑和常见的误区&#xff1f;以及入行大模型最顺滑的…

扩散模型系列笔记(一)——DDPM

直观理解 扩散模型分为前向过程&#xff08;扩散过程&#xff0c;Data → \to →Noise&#xff09;和后向过程&#xff08;生成过程或逆扩散过程&#xff0c;Noise → \to →Data&#xff09;。在前向过程中&#xff0c;对于每一个观测样本&#xff0c;不断向样本中添加少量噪…

智能编程新纪元:腾讯AI代码助手的高效编程体验

智能编程新纪元&#xff1a;腾讯AI代码助手的高效编程体验 智能编程新纪元&#xff1a;腾讯AI代码助手的高效编程体验引言一、配置开发环境二、AI助手实现高效编程2.1 AI助手自动补全2.2 AI助手实现编程思维2.3 AI助手高效注解2.4 AI助手打破语言壁垒 三、帮助和提升四、优化和…

【CSS入门】第一课 - CSS内容都可以写在哪里?

从这一小节开始&#xff0c;我们开始学习CSS的内容。之前都是学习的HTML标签&#xff0c;还用几节课的时间做了纯HTML标签的实战。 但是只用纯HTML标签做出来的东西呢&#xff0c;不是那么好看&#xff0c;而且你看那么多网站&#xff0c;没有哪个网站只用纯HTML标签做东西的&…

游戏加速器推荐

游戏加速器推荐&#xff0c;玩游戏用什么加速器&#xff01;我得给你推荐一款我常用的。 首先呢&#xff0c;就是深度加速器&#xff0c;它针对目前手游网游的游戏加速效果特别棒&#xff0c;而且界面也很友好。 另外&#xff0c;还有深度加速器&#xff0c;这款加速器不仅支持…

springboot青少年科普平台-计算机毕业设计源码76194

摘 要 对于搭建一个青少年科普平台&#xff0c;您可以考虑使用Spring Boot作为后端框架。Spring Boot是一个能够简化Spring应用开发的框架&#xff0c;能够帮助您快速搭建稳定、高效的后端服务。您可以利用Spring Boot的特性来构建一个可靠的数据服务&#xff0c;用于展示和传播…

为什么稳定的开关电源仍可能振荡

开关模式调节器 开关模式调节器的功能是尽可能高效地将输入电压转换为稳定的恒定输出电压。 此过程会有一些损失&#xff0c;其效率可衡量为 ηPOUTPIN?PINPOUTη→VINIIN(1)VOUTIOUTη?IINVOUTIOUTη/VIN 图 1. 输入电流与输入电压的关系。 图 2. 添加了 12 V 处的切线。…

C++-类与对象基础

一&#xff0c;类的定义 1.1类定义格式 class为定义类的关键字&#xff0c;Stack为类的名字&#xff0c;{}中为类的主体&#xff0c;注意类定义结束时后面分号不能省略。类体中内容称为mian类的成员&#xff1a;类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者…

【麒麟】多种方法修改MAC地址

原文链接&#xff1a;【麒麟】多种方法修改MAC地址 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于在麒麟桌面操作系统上多种方法修改MAC地址的文章。MAC地址是网络接口卡的物理地址&#xff0c;有时我们需要修改它以实现特定的网络配置需求。本文将详细介绍几种…

VS2022中打印中文乱码

我们在使用VS编写C语言代码的时候&#xff0c;我们可能遇见用printf打印中文出现乱码的情况&#xff0c;如下&#xff1a; 下面我们来讲一下怎么解决这种问题&#xff1a; 出现这种现象是因为你使用的编码设置不对&#xff1b; 1.我们首先打开文件标签&#xff0c;看看是否有…

为什么我要从测试经理转行到产品经理?

本文来聊一下我转产品经理的心路历程。 我从大学毕业做的就是软件测试&#xff0c;简单点说就是把别人设计的产品别人码的代码 我们或手工或自动化 的方式检查是否有逻辑问题&#xff0c;是否符合需求设计。某一天我突然对自己的工作不那么热爱&#xff0c;难道一辈子就干这个…

C4D学习笔记

C4D学习笔记 技巧使用对称面的两边会有问题&#xff0c;很生硬洗面奶瓶盖凹槽洗面奶瓶子尾部接缝 常用功能在一个线创建一个平面在圆面内家一圈线&#xff08;KL循环切割&#xff09;在某个面向内加一圈线某个模式切换&#xff0c;选中所有(按着Ctrl键&#xff09;焊接&#xf…

Apache OFBiz系统ProgramExport接口存在远程命令执行漏洞CVE-2024-38856 附POC

@[toc] 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. Apache OFBiz系统简介 微信公众号搜索:南…

8月6日笔记

8月6日 红日靶场打靶继续 SHOW VARIABLES #用于显示服务器运行时的各种系统变量的当前设置。这些变量可以控制服务器的行为在 MySQL 中&#xff0c;general_log 和 general_log_file 是两个与“general”相关的系统变量&#xff0c;它们控制着服务器是否启用一般查询日志以及…

安卓应用开发学习:聚合数据API获取天气预报

一、引言 上个月我通过腾讯位置服务&#xff0c;实现了手机定位应用的开发学习。最近在看软件书籍时&#xff0c;又看到了聚合数据API方面的内容。 书上介绍了聚合数据天气预报API的应用&#xff0c;不过书上的代码看得有些难受&#xff0c;我到聚合数据官网&#xff0c;对天气…

使用Streamlit构建一个web模拟HTTP请求工具

目录 前言 HTTP工具功能点&#xff1a; 1. 导入库: 2.设置页面配置: 3. Markdown格式的说明文本: 4.用户输入界面: 5. 发送请求按钮和逻辑: 6.发送HTTP请求并计算请求细节: 7.总结 前言 最初就是因为在微信看到一篇文章中,看到此http工具的制作因为觉得Streamlit有无限…