使用cin进行输入时,程序将输入视为一系列的字节,其中每个字节都被解释为字符编码。不管目标数据类型是什么,输入一开始都是字符数据,即文本数据。然后,cin对象负责将文本转换为其他类型。控制台输入的文件版本是文本文件,即每个字节都存储了一个字符编码的文件。并非所有的文件都是文本文件。
一、写入到文本文件中
下面来进行一个对比:
将cout用于控制台输出:
·必须包含头文件iostream。
·头文件iostream定义了一个处理输出的ostream类。
·头文件iostream声明了一个名为cout的ostream变量(对象)。
·必须指明名称空间std。
·可以结合使用cout和运算符<<来显示各种类型的数据。
文件输出:
·必须包含头文件fstream。
·头文件fstream定义了一个用于处理输出的ofstream变量(对象),并以自己喜欢的方式对其进行命名,条件是遵守常用的命名规则。
·必须指明名称空间std。
·需要将ofstream对象与文件关联起来,方法之一是使用open()方法。
·使用完文件后,应使用方法close()将其关闭。
·可结合使用ofstream对象和运算符<<来输出各种类型的数据。
ofstream out_file;
out_file.open("hello.txt");
ofstream out_file2;
char filename[50];
cin >> filename;
out_file2.open(filename);
首先需要声明一个ofstream对象,然后用open方法打开文本文件,需要用双引号包住文件的地址。然后就可以和使用cout的一样,使用创建的ofstream对象。另外,open()方法也接受一个C-风格的字符串作为参数。注意如果打开已有的文件,以接受输出时,那么open()将首先截断该文件,丢弃原有的内容,然后将新的输出加入到该文件中。
二、读取文本文件
文件输出和cin可以类似比较,一些基础性质可以和输入到文本文件部分来对比:
·可以使用cin或ifstream对象和get()方法来读取一个字符、和getline()来读取一行字符。
·可以使用cin或ifstream对象结合eof()、fail()方法来判断输入是否成功。
·cin或ifstream对象本身被用作测试条件时,如果最后一个读取操作成功,它将被转换为布尔值true,否则将转换为false。
一般情况下,打开文件的时候需要判断该文件是否成功的打开。调用good()方法可以判断,现在有改进的方法is_open()使用更广泛。