C++之I/O

C++ I/O流 相关算法总结 1、建立一个二进制文件,并对其进行各种操作。struct i_Data //每个学生记录含准考证号、姓名、英语成绩共3个字段int score;if(!for(i=0;i 阅读详情

介绍

之前总结过C的标准I/O库函数,现在总结一下C++的标准I/O库:iostream, fstream, sstream。


同样,与设备无关也是基于流,即处理对象就是字符流或者二进制流。

一个是格式化I/O,用在上层一点,另一个正好相反。

使用流来进行I/O的流程如下:

  1. 创建 & 打开流对象
  2. 将流对象与IO设备连接
  3. 读 / 写
  4. 将流对象与IO设备断开
  5. 关闭 & 销毁流对象

另外,为了支持不同的字符类型,甚至字符集,I/O对象类基本上都使用了C++中的模板类来定义结构。

在头文件iosfwd中对basic_xxx这一系列的模板类进行了实例化并进行了重命名:


iostream - 流IO

ios,即basic_ios<char>,用来保存流对象中一些比较常用的属性。它们的父类ios_base保存独立于模板参数的数据,ios保存依赖于模板参数的数据。

istream, ostream两者分别提供输入和输出的API。
iostream,多重继承自istream和ostream,iostream类定义在<istream>,提供双向的I/O。

streambuf为字符流提供内存buffer,及一些API。

cin / cout /  cerr / clog 标准流对象。

标准流对象可以直接进行“3. 读 / 写”。

iomanip - 设置I/O格式

  1. <iomanip> header: setw(), setprecision(), setbas(), setfill().
  2. <iostream> header: fixed|scientific, left|right|internal, boolalpha|noboolalpha, etc.

fstream - 文件I/O

继承自iostream。

字符文件&二进制文件的处理方式同一般流。

ifstream, ofstream用于文件输入输出,分别继承自istream,ostream。

filebuf为文件提供内存buffer,及一些API。


sstream - 字符串流

istringstream, ostringstream用于string buffer的输入输出。
stringbuf为string流提供内存buffer,及一些API。

参考



其它C++参考资料
C++ Specifications
  1. ISO/IEC 14882:2011 "Programming Language. C++" (The "C++11", version 3).
  2. ISO/IEC 14882:2003 "Programming Language. C++" (The "C++03", version 2).
  3. ISO/IEC 14882:1998 "Programming Language. C++" (The "C++98", version 1).
C++ Textbooks
  1. Bjarne Stroustrup (Creator of C++), "The C++ Programming Language", 4th ed, 2012. (Covers C++11.)
  2. Nicolai M Josuttis, "The C++ Standard Library: A Tutorial and Reference", 2nd ed, 2012.
  3. Bjarne Stroustrup, "The Design and Evolution of C++".
  4. Stephen Prata, "C++ Primer Plus Developer's Library", 6th ed, Addison-Wesley, 2012. (Covers C++11.)
  5. Paul Deitel & Harvey Deitel, "C++ How to Program", 8th ed, Prentice Hall, 2012.
  6. Stanley B. Lippman, Josee Lajoie, Barbara E Moo "C++ Primer", 5th ed, 2012. (Covers C++11.)
  7. Scott Meyers, "Effective C++: 55 Specific Ways to Improve your Programs and Design", 3rd ed, 2005; "Effective STL: 50 Specific Ways to Improve your use of the Standard Template Library", 2001.
  8. Herb Sutter, "Exceptional C++: 47 Engineering Puzzles, Programming Problems and Solutions", 1999; "More Exceptional C++: 40 New Engineering Puzzles, Programming Problems and Solution", 2001.
  9. Gary J. Bronson, "Program Development and Design using C++".
  10. Robert C. Seacord, "Secure Coding in C and C++", 2nd ed, 2013.
Online References
  1. http://www.cplusplus.com (C++ documents, tutorials, and references).
  2. GNU GCC (GNU Compiler Collection) @ http://gcc.gnu.org, with source codes.
  3. Bjarne Stroustrup's C++11 FAQ @ http://www.stroustrup.com/C++11FAQ.html.


C++标准I/O库:iostream, fstream, sstringstream 在写代码的过程中,我们最常做的事就是io,无论 阅读详情

相关推荐

C++I/O描述

介绍了 C++的 I/O( 输入输出 )问题,本文结构清晰,讲解简单易懂,对 C++ 的流模型作为细致的分析和讲解, 并介绍了 IO 流类中的各种成员函数,对于输出部分介绍了 cout 流, put 和 write 函数,介绍了 4 种控制输出时格式的 方法,即使用控制符,成员函数, iomanip 头文件及使用标记进行设置的 setf()函数来进行输出时的格式控制。对于输 入部分,介绍了 cin 流,输入时的错误检测机制,及使用输入流类的成员函数进行输入的函数。最后详细介绍了文件的 输入输出

C++ std :: stringbuf (tcy)

1.1.字符串流缓冲区String stream buffer typedef basic_stringbuf <char> stringbuf; 流缓冲区以读取和写入 串对象 1.2.说明: 此类的对象在内部维护一个字符序列,它们用作它们的关联输入序列和/或关联输出序列。 内部序列可以从串 对象,或使用成员复制到一个对象 力量。 继承虚拟成员提.

tcy-阿春 8138

使用PLINK做GWAS(2)

利用PLINK对单基因控制的性状进行定位,之前一篇文章粗滤的记录了一下使用PLINK的命令,本次博客主要记录一下如何根据SNP芯片的数据制作PLINK的格式,以及分析的步骤,最后数据的可视化。 首先,有的公司给的新片的数据就是一个excel表格,列表示的是样品,行表示的是基因型,基因型用ATCG构成,当然有的基因型是用数字0或者1表示的。下面我拿到的一个数据是15个样品构成的基因型,有13个样品是突变体,2个样品是野生型。 格式如下: 第二步:将此基因型存成csv文件,使用R进行读取,在R中制作pl

samhuairen的专栏 2921

std::string数据与std::stringbuff数据之间的转换

从到:可以使用构造函数或str()方法。从到:使用str()方法获取字符串内容。这样可以方便地在两者之间进行转换。

LIUMINGHUA111的博客 442

ShardingSphere-jdbc 5.5.0 + spring boot 基础配置 - 实战篇

shardingsphere 5.5.0移除了sm4算法,自己加上即可。增加spi扩展org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm增加以下代码:SM4算法代码/***/static {@Getter@Overrideif (!

qq_21903999的博客 4746

蓝牙6.0的‘新雷达’:Channel Sounding信道探测,真能比UWB更香吗?

本文探讨了蓝牙6.0的Channel Sounding信道探测技术在室内定位领域的应用潜力。通过与UWB技术的对比分析,揭示了其在成本、功耗和兼容性方面的优势,特别是在智能门锁、物品追踪等场景中的商业价值。Channel Sounding技术不仅具备亚米级精度,还能通过现有蓝牙设备实现零边际成本部署,为物联网应用提供了新的解决方案。

weixin_29288313的博客 333

c++11 标准模板(STL)(std::basic_stringbuf)(一)

std::basic_stringbuf 是关联字符序列为内存常驻的任意字符序列的 std::basic_streambuf 。能从 std::basic_string 的实例初始化它,或将它做成该类的实例。 std::basic_stringbuf 的典型实现保有一个 std::basic_string 类型对象,或等价的可伸缩序列容器作为数据成员,并将它同时用作受控制字符序列(为 std::basic_streambuf 的六个指针所指向的数组)和关联字符序列(所有输入操作的字符源和输出操作的目标)。

qq_40788199的博客 392

VMD分子可视化实战:5个隐藏技巧让你的科研图像秒变顶刊级别

本文深入探讨了VMD分子可视化软件在科研图像美化中的5个高阶技巧,旨在帮助研究者将分子结构图提升至顶刊级别。内容涵盖原子色彩与材质的艺术化定制、沉浸式分子环境构建、专业构图与视角控制、数据驱动的动态可视化以及自动化工作流建立,通过精细的色彩映射、光照调整、周期性边界展示和脚本自动化,显著增强图像的科学叙事性与视觉冲击力。

weixin_29240343的博客 421

c++11 标准模板(STL)(std::basic_stringbuf)(三)

1) 移动赋值运算符:移动 rhs 的内容到 *this 中。移动后 *this 拥有 rhs 之前保有的关联 string 、打开模式、本地环境和所有其他状态。 交换 *this 和 rhs 的状态与内容。 获取和设置底层字符串。

qq_40788199的博客 481

Vue - 详细完美解决 ElementUI MessageBox “多次“ 弹框问题,让其无论执行多少次都只弹出来一次(常见于请求拦截器多次触发弹框,导致弹出来很多个)详细示例代码,保证完美解决!

vue如何防止ElementUIMessageBox多次弹框,vueelement弹框弹出来很多次怎么办,elementvueMessageBox解决执行多次后出现多次弹框的问题,elementUI如何阻止MessageBox多次弹出来,vue+element解决多个请求同时报错,弹出多个消息框message,饿了么组件库MessageBox弹框频繁弹出解决方法,vue调用MessageBox出现多次弹框,vueelementMessageBox怎么只弹出一次,vue之axios请求

🏆 前端领域优质创作者 8196

第28节:cesium 加载高程数据(含源码+视频)

cesium 加载高程(地形)数据

qq_29384639的博客 1741

c++ stringbuf 简单实验

代码 // ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream> #include <sstream> #include <string> #include <stdio.h> using namespace std; int main() { std::cout << "Hello World!\n"; stringbu

xie__jin__cheng的博客 1133

GEE APP:时间序列影像批处理工具:按月筛选与智能导出解决方案出工具

本文介绍了一个基于Google Earth Engine(GEE)开发的智能时序影像处理工具,可高效处理遥感影像时间序列数据。该工具采用三栏式交互布局,包含控制面板、地图显示和缩略图预览区域。核心功能包括:1)灵活的时间筛选机制,支持年度范围选择和月份批量选择;2)智能影像筛选算法,基于云量、空间覆盖等条件自动选择最佳影像;3)交互式缩略图预览,支持点击加载完整影像;4)自动化批量导出系统,实现标准化命名和统一存储。工具可广泛应用于农业监测、城市扩张研究、生态环境评估等领域,显著提高遥感数据预处理效率,确保

此星光明博客 113

C++ I/O 进阶

C++ I/O 进阶.

我是小白呀的博客 1544

双目深度相机--10.双目视觉的主要步骤讲解分析

双目视觉技术通过模拟人眼原理,利用两个相机从不同视角采集图像,实现三维坐标计算。其核心流程包括:1)系统标定,消除相机畸变并建立坐标映射关系;2)图像同步采集与预处理;3)立体匹配,寻找左右图像对应点;4)基于视差图的深度计算;5)三维重建生成点云或网格模型;6)结果应用如目标测距、三维建模等。关键技术难点在于精确标定和准确匹配,这两步直接影响最终深度计算的精度。该技术广泛应用于自动驾驶、工业检测、VR等领域,实现了从二维图像到三维空间的精准转换。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 625

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

探索高效I/O的未来:liburing4cpp深度解析与实践指南

探索高效I/O的未来:liburing4cpp深度解析与实践指南 在异步编程和高性能网络服务的前沿阵地,一个名为liburing4cpp的项目正悄然兴起,为现代C++开发者打开了一扇通向Linux系统底层高效I/O的大门。本文旨在全方位剖析liburing4cpp,展示其独特魅力,并探讨它如何在当今的技术栈中占有一席之地。 项目介绍 liburing4cpp是一个基于C++20协程的先进库,旨在提...

gitblog_00102的博客 569

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Cpp_I/O流

一、主要I/O流类 ios_base | ios _/ | | _ /

Jerry的专栏 813

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C++之I/O流

本篇文章进行C++中I/O流学习!!!C语言中,将一个整形数据转换成一个字符串格式时,该怎么做?使用itoa()函数使用sprintf()函数但是两个函数在转化时,都得需要先给出保存结果的空间,那空间要给多大呢,就不太好给定,而且转化格式不匹配时,可能还会得到错误的结果甚至程序崩溃Test();return 0;}在C++中,可以使用stringstream类对象来避开此问题在程序中如果想要使用stringstream,需要包sstream头文件。

gangaue的博客 1644

C++I/O流详解

C++ I/O流详解

qq_52905520的博客 3414

C++ I/O

C++中的I/O I/O操作,是针对内存而言。 是对内存中的数据进行input和output。 这将是之后和文件I/O很多人分不清read,write等等到底是读还是写迷茫之处的根源。 示例: cin:console in的意思。首先确定是个in,相对谁?所有I/O都是相对内存的。所以是in到内存中去,来自哪?cin的c告诉你了呀,是console。 其实,所有的ostream对象,都是把数据从内存中拿出来,输出去。 针对文件的ostream不就是把内存中的数据从内存中拿出来output到文件中吗 针对co

m0_46821706的博客 384

Linux C\C++方式下的文件I/O编程

在旧头文件里的fstream.h,如果使用ifstreamfile的默认参数声明一个输入文件流,当这个要读的file文件不存在时,会自动创建一个空文件,从而给判断文件是否存在造成了很多麻烦。因为C++兼容C,所以C中的输入输出函数依然可以在C++中使用,但是很显然,直接把C的那套输入输出搬到C++中肯定无法满足C++的需求,更重要的一点是,C中的输入输出有类型要求,只支持基本类型,因此C++设计了易于使用的并且多种输入输出流接口统一的I/O类库,并且支持多种格式化操作,还可以自定义格式化操作。

夏天又到了的专栏 3182

【C++】C++ I/O流详解

C++的I/O流(输入/输出流)为处理输入和输出操作提供了一种强大且灵活的方式。它们是C++标准库的一部分,能够让程序从不同的来源读取数据并向各种目的地写入数据,比如控制台、文件,甚至是内存缓冲区。在C++中掌握I/O流的使用,对于高效地处理数据输入输出至关重要。默认情况下,C++的输出流是带有缓冲区的。C++的I/O流基于“流”的概念,流可以理解为数据从输入设备(如键盘、文件等)到程序或从程序到输出设备(如屏幕、文件等)传输的途径。文件流是C++中另一个常用的I/O操作类型。,并最终显示在屏幕上。

2403_86785171的博客 1041

深入详解C++ I/O

                                    C++ I/O深入详解库自动定义了一些标准对象:cout, ostream类的一个对象,可以将数据显示在标准输出设备上. cerr, ostream类的另一个对象,它无缓冲地向标准错误输出设备输出数据. clog, 类似cerr,但是它使用缓冲输出. cin, istream类的一个对象,它用于从标准输入设备读取数据. 库

sun_top的专栏 5887

C++I/O流——(1)I/O流的概念

C++I/O流——(1)I/O流的概念

一个正在学习C/C++的博主 1268

C++学习21:C++I/O流和标准I/O流

C++I/O流和标准I/O流

1479

c++笔记08---I/O 流,格式化 I/O,非格式化 I/O,随机 I/O,二进制 I/O

1.    输入输出 I/O 流             C: fopen/fclose/fread/fwrite/fprintf/fscanf/fseek/ftell/fput/fget...     C++: 对基本的 I/O 操作做了类的封装,其功能没有任何差别,用法也相似;      2.    格式化 I/O 流:>         #include         #in

wolfsun3的专栏 889
上一篇: [iOS] dataWithBytes*引起的内存泄漏问题
test27
博客等级 码龄16年 11粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值