第八章:标准IO库
来源:互联网 发布:painter mac 编辑:程序博客网 时间:2024/06/05 17:42
1.IO类型在三个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,而sstream定义的类型则用于读写存储在内存中的string对象.
2.IO对象不可复制或赋值,即表明 ①无法将其存储在容器中 ②形参或返回类型也不能为流类型,如果要传递或返回IO对象,则必须传递或返回指向该对象的指针或引用 3. IO标准库管理一系列条件状态成员,用来标记给定IO对象是否处于可用状态,或者碰到了哪种特定的错误。标准库定义的一组函数和标记,提供访问和操纵流状态的手段。 badbit标志着系统级的故障,出现这类错误,则该流通常就不能再使用了,如果出现的是failbit可恢复的错误,通常是可以修正的 流的状态有bad,fail,eof和good操作揭示前三个和good相反;clear和setstate操作用于改变条件成员的状态 4.下面几种情况将导致缓冲区的内容被刷新,即写入到真实的输出设备或者文件: ①程序正常结束.作为main返回工作的一部分,将清空所有输出缓冲区. ②在一些不确定的时候,缓冲区可能已经满了,在这种情况下,缓冲区将会在写下一个值之前刷新 ① 用操作符显式的舒心缓冲区,如endl(其实还有flush和ends) ② 在每次输出操作执行完后,用unitbuf操纵符设置流的内部状态从而清空缓冲区 ③ 可将输出流与输入流关联起来.在这种情况下,在读输入流时将刷新缓冲区 警告:如果程序崩溃了,则不会刷新缓冲区 这一章在平时编程时一般是简单的使用,用于对文件的读写. 例子: ●创建并向文件写入信息: 方式一: #include <fstream.h> #include <iomanip.h> void main() { ofstream f1("a.txt"); if (!f1) { return; } f1<<"姓名:"<<"袁孙良"<<endl; f1<<"性别:"<<"男"<<endl; f1.close(); } 方式二: #include <fstream.h> void main() { ofstream fin("a.txt"); if (!fin) { cout<<"File open error"; return; } char c[80] = "我是一个兵!"; fin.write(c,80); fin.close(); } ●从文件中读取信息: 方式一: #include <fstream.h> void main() { fstream f("a.txt",ios::out); f<<123<<3.14<<'A'<<"How are you"; f.close(); f.open("a.txt",ios::in); int i; double d; char c; char s[20]; f>>i>>d>>c; f.getline(s,20); cout<<i<<" "<<d<<" "<<c<<" "<<s<<endl; f.close(); } 方式二: #include <memory.h> #include <fstream.h> void main() { ifstream fin("a.txt",ios::nocreate); if (!fin) { cout<<"File open error"; return; } char c[80]; memset(c,0,80); while (!fin.eof()) { fin.read(c,80); cout<<c<<endl; } fin.close(); } 简单的复制文件: #include <fstream.h> void main() { ifstream fin("a.txt",ios::nocreate|ios::binary); if (!fin) { cout<<"File open Error"<<endl; return; } ofstream fout("b.txt",ios::binary); char c[1024]; while (!fin.eof()) { fin.read(c,1024); fout.write(c,fin.gcount()); } fin.close(); fout.close(); }
strm::iostate 机器相关的整型名,由各个iostream类定义,用于定义条件状态
strm::badbit strm::iostate类型的值,用于指出被破坏的流
strm::failbit strm::iostate类型的值,用于指出失败的IO操作
strm::eofbit strm::iostate类型的值,用于指出流已经到达文件结束符
s.eof() 如果设置了流s的eofbit值,则该函数返回true
s.fail() 如果设置了流s的failbit值,则该函数返回true
s.bad() 如果设置了流s的badbit值,则该函数返回true
s.good() 如果流s处于有效状态,则该函数返回true
s.clear() 将流s中的所有状态值都重设为有效状态
s.clear(flag) 将流s中的某个指定条件状态设置为有效。flag的类型是strm::iostate
s.setstate(flag) 给流s添加指定条件。flag的类型是strm::iostate
s.rdstate() 返回流s的当前条件,返回值类型为strm::iostate
流必须处于无错误状态,才能用于输入或输出。
- 第八章 标准io库
- 第八章:标准IO库
- 第八章 标准IO库
- 第八章 标准IO库
- 第八章:标准 IO 库
- 第八章 标准IO库
- 第八章 标准IO库
- 第八章 标准IO库
- 第八章 标准IO库
- C++ Primer 第八章 标准IO库
- C++ Primer 第八章 标准IO库
- C++ Primer 第八章 标准IO库
- c++笔记 第八章 标准IO库
- C++ Primer 4 第八章 标准 IO 库
- c++primer学习笔记 ( 第八章 标准IO库)
- C++Primer笔记 第八章 标准IO库
- (笔记)C++ Primer/第八章 标准IO库
- C++ Primer 【第四版】第八章 标准IO库
- iphone开发之单元测试SenTestCase
- AGAL (Adobe Graphics Assembly Language) 记录
- 关于 using namespace std
- 判断 iPhone 是否已插入 SIM 卡的方法
- 幽默牛逼的情侣吵架
- 第八章:标准IO库
- CreateProcess
- 全排列的递归实现方法
- 多线程与多进程
- 黑马程序员Java培训、Android培训-Java 学习过程记录_面向对象上
- 如何成为Android高手第一篇
- jsp中文乱码
- html解析类库htmlparser.net使用方法
- 计算机法律