1.文本I/O和文本文件
使用cin输入时,程序将输入看成一系列字节,其中每个字都被解释为字符编码。
不管目标数据类型是什么,输入一开始都是字符数据--文本数据。
使用cin来输入不同类型的数据是行不通的,所以我们要寻找新的方式输入数据。
2.写入到文本文件
c++使用了一个类似于cout的东西来作为文件输入。
- 必须包括头文件fstream
- 头文件fstream定义了一个用处理输出的ofstream类
- 声明了一个或多个ofstream变量,并自己命名
- 必须指明名称空间std:例如,为引用元素ofstream,必须使用编译指令using或前缀std::
- 需要将ofstream对象与文件关联起来。为此方法之一是open()方法
- 使用完文件,应使用close()方法将其关闭
- 可以结合使用ofstream对象和操作符<<来显示各种类型的数据
申明自己的ofstream对象,为其命名。例:
ofstream outfile;
ofstream fout;
下面演示如何将其与文件关联起来。例:
outfile.open("fish.txt"); char filename(50); cin>>filename; fout.open(filename);
重要的是声明了一个ofstream对象并与文件关联起来后,可以像使用cout一样使用它。如<<、endl和self()
如果在程序运行前,文件不存在,open()创建一个。
3.读取文本文件
- 必须包括头文件fstream
- 头文件fstream定义了一个用处理输出的ifstream类
- 声明了一个或多个ifstream变量,并自己命名
- 必须指明名称空间std:例如,为引用元素ifstream,必须使用编译指令using或前缀std::
- 需要将ifstream对象与文件关联起来。为此方法之一是open()方法
- 使用完文件,应使用close()方法将其关闭
- 可以结合使用ifstream对象和操作符<<来显示各种类型的数据
- 可以使用ifstream对象和get()方法来读取一个字符,使用ifstream对象和getline()来读取一行字符
- 可以结合使用ifstream和eof()、fail()等方法来判断输入是否成功
- ifstream对象本身被用作测试条件时,如果最后一个字符读取操作成功,它将转化为bool值true,否则为false。
申明自己的ifstream对象,为其命名。例:
ifstream infile;
ifstream fin;
下面演示如何将其与文件关联起来。例:
infile.open("bowling.txt");
char filename[50];
cin>>filename;
fin.open(filename)
如果打开一个不存在的文件,会报错。使用is_open()来检验。例:
infile.open("bowliing.txt");
if(!infile.is_open())
{
exit(EXIT_FAILURE);
}
如果文件成功打开,方法is_open()返回true;反正为false。
函数exit()的原型实在头文件cstdlid中定义,还定义了一个同系统通信的参数值EXIT_FAILURE。exit()终止程序。