基本技能11.8:读写文本文件
最简单的读取文本文件或者写入到文本文件的方法就是使用<<和>>操作符。例如,下面的程序写入一个整型数,浮点数和字符串到一个名称为test的文件中:
//写入文件
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ofstream out("test");
if (!out)
{
cout << "Cannot open file.\n";
return 1;
}
out << 10 <<" " << 123.23 << "\n";
out << "This is a short text file.";
out.close();
return 0;
}
下面的程序则从上面程序写入的文件中读出一个整型数,一个浮点数,一个字符和一个字符串:
//读取文件
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
char ch;
int i;
float f;
char str[80];
ifstream in("test");
if( !in)
{
cout <<"Cannot open file." ;
return 1;
}
in >> i;
in >>f;
in >> ch;
in >>str;
cout << i << " " << f << " " << ch <<"\n";
cout << str;
in.close();
return 0;
}
必须明确的是当我们使用>>操作符来读取文本文件的时候,是会进行一定的字符转换的。例如,空白字符将会被忽略。如果我们不想进行这样的字符转换,我们必须以二进制方式打开文件。另外,还要明确的是,当使用>>读取字符串的时候,输入会在遇到第一个空白字符的时候就停止了。
专家答疑:
问题:正如你在篇章1中讲到的那样,C++是C的超集。那我知道在C中定义了自己的输入/输出系统。这个系统在C++中可以使用吗?如果可以使用,我们应该在C++程序中使用这个系统吗?
解答:对于第一个问题的答案是肯定的。C语言中的输入/输出系统在C++中也是可以使用的。对于第二个问题的答案则不完全是否定的。C语言中的输入/输出系统不是面向对象的。然而这个系统现在还被广泛地使用着,它的效率高,开销小。因此,在一些专业性较强的程序中,选择C语言的输入/输出系统则是不错的选择。关于C语言中的输入/输出系统,更多的信息可以参见我的另外一本书《C++完全参考手册》
练习:
1. 哪个类可用来创建一个输入文件?
2. 哪个函数可用来打开一个文件?
3. 我们是否可以使用 << 和 >> 来对文件进行输出和输入呢?