基本技能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. 我们是否可以使用 << 和 >> 来对文件进行输出和输入呢?