博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《C++ Primer Plus(第六版)》(39)(第十七章 输入、输出和文件 笔记2)
阅读量:4684 次
发布时间:2019-06-09

本文共 2319 字,大约阅读时间需要 7 分钟。

要点:输入流

1.流状态

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

成员                                            |                     描述

enfbit                                          | 如果到文件尾,设置为1  

badbit                                         |   如果流被破坏,则设置为1;例如,文件读取错误

failbit                                           |   如果输入操作未能读取预期的字符或输出操作没有写入预期的字符,则设置为1

goodbit                                       |   另一种表示0的方法

good()                                         |   如果流可以使用(所有的位都被清除),则返回true

eof()                                             |   如果eofbit被设置,则返回true

bad()                                           |  如果badbit被设置,则返回true

fail()                                             |  如果badbit或failbit被设置,则返回true

rdstate()                                      |   返回流状态

exceptions()                               |   返回一个位掩码,支出哪些标记导致异常被引发

exceptions(isostate ex)           |   设置哪些状态将导致clear()引发异常,例如,如果ex是eofbit,则如果eofbit被设置,clear()将引发异常

clear(iostate s)                          |   将流状态设置为s,s的默认值为0(goodbit);如果(restate()& exceptions())!= 0,则引发异常basic_ios::failure

setstate(iostate s)                    |   调用clear(rdstate() | s)。这将设置与s中设置的位对应的流状态位,其他流状态为保持不变。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2.成员函数get(char&)
只要有有效的输入,都会返回cin,除非到达文件尾。可以拼接
3.成员函数get(void),返回整形。不能拼接。
如果到了文件尾,返回一个iostream文件定义的常量EOF
4. 
getline()将换行符读出来,如果读了最大的字符数,下一个还不是换行符,会设置failbit
get()会把换行符留在输入流中。遇到空行的话,是设置failbit
istream& ignore(int = 1, int = EOF);读取指定数目的字符或者到达分隔符,将这些字符丢弃
5.
read()读取指定数目的字节,并存储在指定的位置中。用来和wirite结合的,主要用于文件输入输出。
read()不会在输入后加上空值字符。
6.peek()返回输入流中的下一个字符,但是不会抽取出来。
7.gcount()返回最后一个非格式化抽取方法读取的字符数。
8.putback()将一个字符放到输入流中,下一个读取的第一个字符的位置。
9.关闭文件链接并不会删除流,而只是断开了流到文件的链接。缓冲区任然存在。
10.is_open()检测文件是否打开状态。这是C++11新增的,能够检测出试图以不合适的文件模式打开文件时失败。
旧的方式不能检测出来。
if(fin.fail());
if(!fin.good());
if(!fin);
这几个都是旧的方式。
11.main函数
int main(int argc, char* argv[])
argc为命令行中的参数个数,其中包括命令名本身。
argv变量为一个指针,它指向一个指向char的指针。可以看做一个指针数组。
argv[0]是命令,如果是通过vs运行,则是程序exe的绝对路径了。arge[1]之后就是参数了。
12.ios_base类定义了一个openmode类型,用于表示模式。
------------------------------------------------------
常量                      |         含义
ios_base::in          |  打开文件,以便读取
ios_base::out        |  打开文件,以便写入
ios_base::ate        |  打开文件,并将指针移到文件尾
ios_base::app       |  追加到文件尾
ios_base::trunc     |   如果文件存在,则截短文件
ios_base::binary   |   二进制文件
------------------------------------------------------
13.bitmask就是位掩码,具体实现,可能跟编译器有关,一般是int。其实就是用二进制的方式来看待每一位,每位都是一个独立的标记。
平时用得很多,只是没这个说法而已。
14.seekg()和seekp()函数提供文件的随机存取。
tellg()和hellp()报告当前文件位置。
g是输入流的指针
p是输出流的指针
15.sstream头文件定义了istringstream和ostringstream类,能够使用istream和ostream方法来抽取字符串中的信息,并对要放入字符串中的信息进行格式化。

转载于:https://www.cnblogs.com/fablegame/p/6430225.html

你可能感兴趣的文章
一致性 hash 算法( consistent hashing )
查看>>
[译]Javascript中的do-while循环
查看>>
html之内联元素与块状元素
查看>>
This is ACM bings to us
查看>>
linux下恢复误删除的数据文件
查看>>
Android_API合集_中文版.rar
查看>>
Linux 遭入侵,挖矿进程被隐藏排查记录
查看>>
vuecli脚手架+vue+vuex实现vue驱动的demo。
查看>>
5.堆排序
查看>>
【Redis】- 主从复制
查看>>
JSP教程(三)—— 基本语法
查看>>
[poj3254]Corn Fields_状压dp
查看>>
python selenium中iframe切换、window切换方法
查看>>
2019.02.21 bzoj2739: 最远点(决策单调性+分治)
查看>>
mycncart自定义主题
查看>>
python面向对象入门(1):从代码复用开始
查看>>
Cocos2d-js和Android交互
查看>>
Sublime Text3配置Node.js开发环境
查看>>
在线编辑器的原理简单示例
查看>>
MVC弹出子页面向父页面传值
查看>>