C++ Primer 5th笔记(chap 17 标准库特殊设施)未格式化的输入/输出操作

本文主要是介绍C++ Primer 5th笔记(chap 17 标准库特殊设施)未格式化的输入/输出操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 格式化IO

输入和输出运算符(<< 和>>)根据读取或写入的数据类型来格式化它们。

  • 输入运算符忽略空白符
  • 输出应用补白
  • 精度等规则操作

2. 未格式化 IO (unformatted IO)

允许将一个流当作一个无解释的字节序列来处理

2.1 单字节低层IO操作

未格式化操作每次一个字节地处理流

操作解释
is.get(ch)从istream is读取下一个字节存入字符cn中。返回is。
os.put(ch)将字符ch输出到ostream os。返回os。
is.get()将is的下一个字节作为int返回
is.putback(ch)将字符ch放回is。返回is。
is.unget()将is向后移动一个字节。返回is。
is.peek()将下一个字节作为int返回,但不从流中删除它。peek 返回的值仍然留在流中

eg.

char ch;
while (cin.get (ch) )cout.put (ch) ;
  • unget
    输入流向后移动, 从而最后读取的值又回到流中。 即使我们不知道最后从流中读取什么值, 仍然可以调用 unget

  • putback
    更特殊版本的 unget: 它退回从流中读取的最后一个值, 但它接受一个参数, 此参数必须与最后读取的值相同

一般情况下, 在读取下一个值之前, 标准库保证我们可以退回最多一个值。标准库不保证在中间不进行读取操作的情况下能连续调用 putback 或 unget

2.2 从输入操作返回的 int 值

函数返冋一个 int 的原因是: 可以返回文件尾标记。 我们使用 char 范围中的每个值来表示一个真实字符, 因此, 取值范围中没有额外的值可以用来表示文件尾

step1. 将它们要返回的字符先转换为 unsigned char
step2. 将结果提升到 int。

即使字符集中有字符映射到负值, 这些操作返回的 int 也是正值

int ch; // 使用一个 int, 而不是一个 char 来保存 get ( )的返回值
//循环读取并输出输入中的所有数据
while ( (ch = cin.get ( ) )!= EOF)cout.put (ch) ;

这篇关于C++ Primer 5th笔记(chap 17 标准库特殊设施)未格式化的输入/输出操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/855046

相关文章

Win32下C++实现快速获取硬盘分区信息

《Win32下C++实现快速获取硬盘分区信息》这篇文章主要为大家详细介绍了Win32下C++如何实现快速获取硬盘分区信息,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实现代码CDiskDriveUtils.h#pragma once #include <wtypesbase

SpringBoot操作MaxComputer方式(保姆级教程)

《SpringBoot操作MaxComputer方式(保姆级教程)》:本文主要介绍SpringBoot操作MaxComputer方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录引言uqNqjoe一、引入依赖二、配置文件 application.properties(信息用自己

基于Python实现一个PDF特殊字体提取工具

《基于Python实现一个PDF特殊字体提取工具》在PDF文档处理场景中,我们常常需要针对特定格式的文本内容进行提取分析,本文介绍的PDF特殊字体提取器是一款基于Python开发的桌面应用程序感兴趣的... 目录一、应用背景与功能概述二、技术架构与核心组件2.1 技术选型2.2 系统架构三、核心功能实现解析

C++ Primer 标准库vector示例详解

《C++Primer标准库vector示例详解》该文章主要介绍了C++标准库中的vector类型,包括其定义、初始化、成员函数以及常见操作,文章详细解释了如何使用vector来存储和操作对象集合,... 目录3.3标准库Vector定义和初始化vector对象通列表初始化vector对象创建指定数量的元素值

C#中的 Dictionary常用操作

《C#中的Dictionary常用操作》C#中的DictionaryTKey,TValue是用于存储键值对集合的泛型类,允许通过键快速检索值,并且具有唯一键、动态大小和无序集合的特性,常用操作包括添... 目录基本概念Dictionary的基本结构Dictionary的主要特性Dictionary的常用操作

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring

C# winform操作CSV格式文件

《C#winform操作CSV格式文件》这篇文章主要为大家详细介绍了C#在winform中的表格操作CSV格式文件的相关实例,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录实例一实例效果实现代码效果展示实例二实例效果完整代码实例一实例效果当在winform界面中点击读取按钮时 将csv中

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

C++实现回文串判断的两种高效方法

《C++实现回文串判断的两种高效方法》文章介绍了两种判断回文串的方法:解法一通过创建新字符串来处理,解法二在原字符串上直接筛选判断,两种方法都使用了双指针法,文中通过代码示例讲解的非常详细,需要的朋友... 目录一、问题描述示例二、解法一:将字母数字连接到新的 string思路代码实现代码解释复杂度分析三、

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式