【读书笔记】《C++Primer》第八章 IO库

C++ IO流详解
本文详细介绍了C++中IO流的三大类型:流、文件及字符串,并解释了它们之间的关系和使用方法。此外,还讨论了IO对象的状态管理、条件状态、缓冲机制以及文件输入输出操作的具体实现。
  1. IO类型间的关系

 

  IO分三大类:文件以及字符串,它们分别对应iostream、 fstream、 sstr-eam三个头文件。通过继承机制,后两者的很多函数的使用方法都可以直接套用iostream的,比如:ifstream和istringstream都继承自istream,我们就可以像使用cin一样使用ifstream和istringsteam对象。

 

  1. IO对象无拷贝或赋值

 

  IO对象无法被拷贝,所以我们也不能将返回类型和形参设为流形式。另外,由于IO对象的状态在读写时会改变状态,所以我们也不能对其指针形参用const限定。

 

  1. 条件状态

 

  IO类定义了条件状态供我们访问和检查。其中,badbit置位表示系统错误,无法恢复;failbit置位表示有错误发生,可以恢复;eofbit置位表示流到达了文件结束;而goodbit则用来指出流未处于错误状态,此值保证为0。

 

  另外,不要直接访问这些参数,用IO类提供的eof()fail()bad()good()函数来检查。

 

  通常我们都用rdstate()来得到流的当前状态,而用clear()将所有条件状态复位。至于clear(flags)setstate(flasgs)则分别表示恢复flags的条件状态和将flags条件状态位置位。

 

  1. 缓冲

 

  我们只需要记住三点:

  • cout<<"hi"<<endl表示输出“hi”和一个换行(line),然后刷新缓冲区

  • cout<<"hi"<<flush表示输出“hi”,然后刷新缓冲区

  • cout<<"hi"<<ends表示输出“hi”和一个空格(space),然后刷新缓冲区

 

  1. 文件输入输出

 

  动手实践了一个例子:

 

 1 #include <fstream>
 2 #include <iostream>
 3 #include <string>
 4 
 5 using namespace std;
 6 
 7 /*一个简单的文件输入输出程序:将当前文件夹中的
 8 hint.txt中的内容传到tnih.txt中。*/
 9 int
10 main()
11 {
12     string s;
13     string m = "";
14     ifstream inputF("hint.txt");
15     ofstream outputF("tnih.txt");
16     
17     while (inputF >> s)
18         m += s + " ";
19     outputF << m << endl;
20     inputF.close();
21     outputF.close();
22 
23 }

 

其中,我碰到的问题如下:

  • std::ifstream>>std::string等流与string传递的使用得不到支持

  • 源文件只能输出一单词到目标文件

 

  上网后发现,关于流文件和string对象传值的操作定义在string头文件里,不过联想到sstream头文件,这样做也便无可厚非,所以为了方便,我加上了string头文件。

 

  然后关于输出内容不完整的问题,想了下发现原来在以字符串为媒介传值时源文件会将内容按空格等符号分割成多个字符串,所以我用一个while循环将源文件全部传到m里面,并且补完了因分割而丢掉的空格。

 

  1. string流

 

  哎,这个真的没什么好说的了,正如我在1里面提到的,因为它们继承机制的原因,使用方法都大同小异。

转载于:https://www.cnblogs.com/GShell-Hzn/p/7184108.html

标题基于Python的自主学习系统后端设计与实现AI更换标题第1章引言介绍自主学习系统的研究背景、意义、现状以及本文的研究方法和创新点。1.1研究背景与意义阐述自主学习系统在教育技术领域的重要性和应用价值。1.2国内外研究现状分析国内外在自主学习系统后端技术方面的研究进展。1.3研究方法与创新点概述本文采用Python技术栈的设计方法和系统创新点。第2章相关理论与技术总结自主学习系统后端开发的相关理论和技术基础。2.1自主学习系统理论阐述自主学习系统的定义、特征和理论基础。2.2Python后端技术栈介绍DjangoFlask等Python后端框架及其适用场景。2.3数据技术讨论关系型和非关系型数据在系统中的应用方案。第3章系统设计与实现详细介绍自主学习系统后端的设计方案和实现过程。3.1系统架构设计提出基于微服务的系统架构设计方案。3.2核心模块设计详细说明用户管理、学习资源管理、进度跟踪等核心模块设计。3.3关键技术实现阐述个性化推荐算法、学习行为分析等关键技术的实现。第4章系统测试与评估对系统进行功能测试和性能评估。4.1测试环境与方法介绍测试环境配置和采用的测试方法。4.2功能测试结果展示各功能模块的测试结果和问题修复情况。4.3性能评估分析分析系统在高并发等场景下的性能表现。第5章结论与展望总结研究成果并提出未来改进方向。5.1研究结论概括系统设计的主要成果和技术创新。5.2未来展望指出系统局限性并提出后续优化方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值