如下程序中,声明一个ofstream对象后,便可以使用方法open()将该对象特定文件关联起来:1
2ofstream outFile;
outFile.open("carinfo.txt");
程序使用完该文件后,应该将其关闭:1
outFile.close();
注意,方法close()不需要使用文件名
作为参数,这是因为outFile已经同特定的文件关联起来。如果您忘记关闭文件,程序正常终止时将自动关闭它。
outFile可以使用cout可使用的任何方法。他不但能够使用运算符<<,还可以使用各种格式化方法,如setf()和precision()。这些方法只影响调用它们的对象。例如,不同的对象,可以提供不同的值:1
2cout.precision(2); //use s precision of 2 for the display
outFile.precision(4); //use a precision of 4 for file output
需要注意的重点是,创建好ofstream对象(如outFile)后,便可以像使用cout那样使用它。
回到open()方法:
outFile.open(“carinfo.txt”);
在这里,程序运行之前,文件carinfo.txt并不存在。在这种情况下,方法open()将新建一个名为carinfo.txt的文件。如果在此运行该程序,文件carinfo.txt将生成,此情况将如何呢?默认情况下,open()将首先截断该文件,即将其长度截断到零————丢弃其原有的内容,然后将新的输出加到该文件中。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
int main()
{
using namespace std;
char automobile[50];
int year;
double a_price;
double d_price;
ofstream outFile;
outFile.open("carinfo.txt");
cout<<"Enter the make and model of automobile:";
cin.getline(automobile, 50);
cout<<"Enter the model year:";
cin>>year;
cout<<"Enter the original asking price:";
cin>>a_price;
d_price = 0.913 * a_price;
cout<<fixed;
cout.precision(2);
cout.setf(ios_base::showpoint);
cout<<"Make and model:"<<automobile<<endl;
cout<<"year:"<<year<<endl;
cout<<"Now asking $"<<d_price<<endl;
outFile<<fixed;
outFile.precision(2);
outFile.setf(ios_base::showpoint);
outFile<<"Make and model:"<<automobile<<endl;
outFile<<"Year:"<<year<<endl;
outFile<<"Was asking $"<<a_price<<endl;
outFile<<"Now asking $"<<d_price<<endl;
outFile.close();
return 0;
}