您的位置:首页 > 编程语言 > C语言/C++

C++中文件ifstream和ofstream流类的操作

2017-03-13 16:52 393 查看
/*****************************************************************************************************
文件描述:
STL---标准库中的标准输入输出流
文件说明:
1)C++兼容C语言的printf、scanf函数和文件操作,但是C++也提供了基于类的输入输出操作,具有类型安全
和可扩展性
2)C++流的概念:C++的输入输出是以字节流的形式实现的
3)流:是指由若干字节组成的字节序列的数据从一个对象传递到另一个对象的操作
4)提取操作:从流中读取数据称为提取操作
5)插入操作:向流内插入数据称为插入操作
6)流在使用前,要建立;在使用后,要删除
7)与输入输出设备相关联的流称为:输入输出流
8)标准库内置了一些可以实现输入输出操作的流类,其对象称为流对象
STL流类:
1)ios_base和ios是抽象基类,由它派生出istream类和ostream类,再通过多重继承派生出iostream类。
2)istream类支持输入操作,ostream类支持输出操作,iostream类支持输入输出操作,它们的定义分别在
<ostream>、<istream>和<iostream>,实现C++标准的设备终端(键盘和显示器)的输入输出操作。
1)C++对文件的输入输出操作需要用ifstream、ofstream和fstream类。
2)ifstream类支持文件的输入,ofstream类支持文件的输出操作,fstream类支持文件的输入输出操作,它们
的定义在头文件<fstream>中
3)C++将字符串也理解为一种输入输出设备,因此,也可以向终端设备和文件那样将数据输入输出到字符串中,
C++对字符串的输入输出操作有两个版本
1)基于C++字符串类string
2)基于C风格的字符串char*
预定义流对象:
标准库STL将常用的iostream类的流对象定义在<iostream>头文件中,它们是:
1)cin :与标准输入设备相关的标准输入流
2)cout:与标准输出流设备相关的标准输出流
3)cerr:与标准错误输出设备相关联的非缓冲方式的标准输出流
4)clog:与标准错误输出设备相关联的缓冲方式的标准输出流
1)cin对象是从标准输入设备到内存的数据流
2)cout对象时从内存到标准输出设备的数据流
文件流:
1)文件的概念:计算机信息根据存储时间可以分为临时性信息和永久性信息。
2)临时性信息:存储于计算机系统临时设备(如内存中),在程序运行结束或者系统断电时,数据信息就会消失
3)永久性信息:永久性信息存储于计算机系统持久型存储设备还只能怪(如磁盘--文件),在这些设备上的数据信
息可以长久的保存下来
4)文件是指存放在磁盘上的数据集合,操作系统以文件为单位对这些数据进行管理。也就是说,如果想得到存在
磁盘上的数据,必须先按文件名找到磁盘上的文件,然后,再从该文件中读取数据;要向磁盘上存放数据
也必须先以文件名为标识创建一个文件,才能向它输出数据
5)文件按数据的组织形式,可以分为两类:
1)ASCII文本文件
2)二进制文件
文件操作:
1)文件打开:已创建的文件流对象需要和指定的磁盘文件建立关联,以便使文件流流向指定的磁盘文件,这个
过程称为文件的打开。
2)打开方式有两种:
1)一是定义文件流对象时:使用带参数的构造函数
2)二是调用文件流成员函数open,其函数原型如下所示:
ifstream(const char* filename,ios::base::openmode mode=ios_base::in):文件输入量构造函数,以指
定的mode打开filename文件
ofstream()
fstream()
open()
is_open()
3)文件关闭:close()
4)文件状态:
1)bool eof()---如果文件已经到了末尾,eof函数返回真(1),否则返回假(0)
2)bool bad()----如果在读写文件过程中出错,bad函数返回true
3)bool fail()
4)bool good()
时间地点:
陕西师范大学----2017.3.13
作    者:
九月
*****************************************************************************************************/
#include<fstream>
#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
char s1[500];
int  cnt = 0;

std::ifstream inf("a.txt");               //【1】打开源文件读
if(!inf.eof())
{
std::ofstream outf("b.txt");
while(!inf.eof())
{
inf.getline(s1,sizeof(s1)-1);
outf<<setfill('0')<<setw(4)<<++cnt<<""<<s1<<endl;
}
outf.close();
inf.close();
}
std::system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: