C++学习-Day-34

一、C++输入和输出

C++把输入和输出看作字节流,它充当了程序和目标之间的桥梁。这使得C++程序可以以相同的方式对待来自键盘和文件的输入和输出,程序只需要检查字节流而不需要知道字节来自何方。管理输入和输出宜按包含两个步骤:

  1. 将流和输入或输出的程序相关联
  2. 将流和文件相关联

通常使用缓冲区可以更高效地处理输入和输出。缓冲区是用作中介的内存块,它是信息从设备传输到程序或者从程序传输到设备的临时存储工具。比如想从磁盘读取某些数据时,直接一个字节一个字节读取,因为从磁盘读取一个字节需要耗费大量的硬件活动,而将这些数据啊先全部读取到缓冲区,再从缓冲内存读取则速度更快。

如果实现不能在所希望时刷新缓冲区,可以使用两个控制符中的一个来强行进行刷新。控制符flush刷新缓冲区,而控制符endl刷新缓冲区并插入一个换行符。

修改显示时候的计数系统。对于整数十进制、十六进制和八进制计数系统的设置,我们可以使用dec、hex、oct控制符。例如将计数系统设置为十六进制,我们可以这样做:hex(cout)或者cout<<hex;

调整字段宽度。width()返回字段当前宽度,width(int n)将当前字段设置为n个空格并返回之前的字段宽度。注意,其只能影响接下来显示的一个项目。

填充字符。默认情况下cout用空格填充,我们可以使用fill()成员函数来来说设置填充字符,其会一直有效直到我们更改。

设置浮点数的显示精度。浮点数精度取决于输出模式,在默认模式下它显示总位数,在定点和科学模式下精度指的是小数点后面的位数。C++默认精度为6位(末尾的0不显示),precision()成员函数使得可以设置精度。该函数设置后一直有效直到重新设置。

setf()方法控制了小数点被显示时其他几个格式选项。ios_base类有一个受保护的数据成员(这里叫作标记),其中的各位控制着格式化的各个方面,像DIP开关一样。setf()函数提供了另外一种调整标记的途径,setf()函数有两种原型:

  1. fmtflags setf(fmtflags);
    其中fmtflags是bitmask类型的typedef名,用于存储格式标记。其中ios_base已经定义好了代表为的常量:
常量含义
ios_base::boolalpha输入和输出bool值,可以为true或false
ios_base::showbase对于输出,使用C++基数前缀(0,0x)
ios_base::showpoint显示末尾的小数点
ios_base::uppercase对于16进制输出,使用大写字母E表示法
ios_base::showpos在正数前面加+
  1. fmtflags setf(fmtflags,fmtflags);
    第二个setf()原型接受两个参数,并返回以前的设置,第一个参数包含了设置值,第二个参数指出要清除第一个参数中的哪些位。
第二个参数第一个参数含义
ios_base::basefieldios_base::dec使用基数10
ios_base::oct使用基数8
ios_base::hex使用基数16
ios_base::floatfieldios_base::fixed使用定点计数法
ios_base::scientific使用科学计数法
ios_base::adjustfieldios_base::left使用左对齐
ios_base::right使用右对齐
ios_base::internal 基数或前缀左对齐,值右对齐

调用setf()的效果都可以使用unsetf()来消除。

单字符函数特性总结
特征cin.get(ch)ch=cin.get()
传输输入字符的方法赋给参数ch函数返回int类型给ch
字符输入时返回值指向istream对象的引用字符编码(int值)
达到文件尾时返回值转换为falseEOF

字符串输入:getline()、get()、ignore()它们的函数原型如下
istream &get(char *,int,char)
istream &get(char *,int)
istream &getline(char *,int,char)
istream &getline(char *,int)
第一个参数用于放置输入字符的内存地址,第二个参数要比读取字符串长度大1(最后一位用于放置结尾空字符),第三个参数指定用作分界符的字符。get()和getline()之间主要区别在于,get()将换行符留在输入流中,而getline()将换行符抽取并丢弃输入流中的换行符。
ignore()成员函数,该函数接受两个参数,一个是数字,指定读取的最大字符数,另一个是字符用作输入分界符。其原型为:
istream & ignore(int=1,int=EOF);

二、文件I/O

要让程序写入文件,必须这样做:

  1. 创建一个ofstream对象啦管理输出流;
  2. 将该对象与特定的文件关联起来;
  3. 以使用cout的方式使用该对象。

以默认方式打开文件进行输出时会自动将文件长度截短为零。

较新的C++提供了一种好的检查文件是否能被打开的方法is_open(),它能检查其他方式不能检查出的微妙问题,比如以一种错误模式打开文件。

文件模式。文件模式描述文件将被如何使用:读、写、追加等,将流与文件进行关联时都提供了第二个参数进行模式设置,ios_base类定义了一个openmode类型,它是一种bitmask类型,我们可以使用ios_base类中定义的多个常量来指定模式,下表中列出了这些常量。

文件模式常量
常量含义
ios_base::in打开文件,以便读取
ios_base::out打开文件,以便写入
ios_base::ate打开文件,并移动到文件尾
ios_base::app追加到文件尾
ios_base::trunc如果文件存在,则截短文件
ios_base::binary二进制文件

随机存取。fstream类为此继承了连个方法:seekg()和seekp(),前者将输入指针移到指定的文件位置,后者将输出指针移到指定文件位置。seekg()第一个原型使用相对位置,seekg()的第一个参数被用来度量特定位置的偏移量,第二个参数指定位置类型,有三个可能值:ios_base::beg指相对文件开始处偏移量;ios_base::cur指相对于当前位置的偏移量;ios_base::end指相对于文件尾的偏移量。seekg()第二个原型使用绝对位置,直接写入位置值(整型)。

如果要检查文件指针当前位置,对于输入流可以使用tellg(),对于输出流可以使用tellp(),它们返回的都是相对文件开头的绝对位置,以字节为单位。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蛋白质是生物体中普遍存在的一类重要生物大分子,由天然氨基酸通过肽键连接而成。它具有复杂的分子结构和特定的生物功能,是表达生物遗传性状的一类主要物质。 蛋白质的结构可分为四级:一级结构是组成蛋白质多肽链的线性氨基酸序列;二级结构是依靠不同氨基酸之间的C=O和N-H基团间的氢键形成的稳定结构,主要为α螺旋和β折叠;三级结构是通过多个二级结构元素在三维空间的排列所形成的一个蛋白质分子的三维结构;四级结构用于描述由不同多肽链(亚基)间相互作用形成具有功能的蛋白质复合物分子。 蛋白质在生物体内具有多种功能,包括提供能量、维持电解质平衡、信息交流、构成人的身体以及免疫等。例如,蛋白质分解可以为人体提供能量,每克蛋白质能产生4千卡的热能;血液里的蛋白质能帮助维持体内的酸碱平衡和血液的渗透压;蛋白质是组成人体器官组织的重要物质,可以修复受损的器官功能,以及维持细胞的生长和更新;蛋白质也是构成多种生理活性的物质,如免疫球蛋白,具有维持机体正常免疫功能的作用。 蛋白质的合成是指生物按照从脱氧核糖核酸(DNA)转录得到的信使核糖核酸(mRNA)上的遗传信息合成蛋白质的过程。这个过程包括氨基酸的活化、多肽链合成的起始、肽链的延长、肽链的终止和释放以及蛋白质合成后的加工修饰等步骤。 蛋白质降解是指食物中的蛋白质经过蛋白质降解酶的作用降解为多肽和氨基酸然后被人体吸收的过程。这个过程在细胞的生理活动中发挥着极其重要的作用,例如将蛋白质降解后成为小分子的氨基酸,并被循环利用;处理错误折叠的蛋白质以及多余组分,使之降解,以防机体产生错误应答。 总的来说,蛋白质是生物体内不可或缺的一类重要物质,对于维持生物体的正常生理功能具有至关重要的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值