一、简单文件的输入输出:
文件输出:
1) 必须包含头文件fstream
2)头文件fstream定义了一个用于处理输出的ofstream类(out file)
3) 需要声明一个或者多个ofstream变量(对象),并以自己喜欢的方式对其进行命名,条件是遵守常用的命名的规则
4) 必须使用命名空间std,(using 或者std::方式)
5)需要将ofstream对象与文件关联起来,方法之一是使用open()方法
6)使用完文件后,应使用close()将其关闭
7)可结合使用ofstream对象和<<来输出各种类型的数据(用其对象代替cout)
所以步骤:
包含头文件 fstream---- 创建一个ofstream对象----将该ofstream对象同一个文件关联起来----就像使用cout那用那样使用该ofstream
eg:
#include<iostream>
#include<fstream>using namespace std;int main(){char automobile[50];int year;double a_price;double d_price;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输出的话cout<<fixed;cout.precision(2);cout.setf(ios_base::showpoint);cout<<"Make and model: "<<automobile<<endl;
cout<<"Year: "<<year<<endl;cout<<"Was asking $ "<<a_price<<endl;cout<<"Now asking $ "<<d_price<<endl;//下面是 用ofstream ,基本out怎么用就怎么用就行,包括格式化的方法ofstream outFile;outFile.open("car.txt"); //如果不存在创建,若存在,则清空再输入(默认,可修改)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;}
读取文本文件:
与上面类似包含头文件fstream, 用ifstream类定义对象,命名空间std,用open与文件关联,close()关闭用ifstream对象和>>读取各种类型的数据,与cin类似,其可用的函数和格式控制也都可以用,
多了一点就是可结合使用ifstream和eof(),fail()等方法来判断输入是否成功,(那上面的打开失败如何判断)
#include<iostream>
#include<fstream>#include<cstdlib>//exit用到这个头文件using namespace std;const int SIZE=60;int main(){char filename[SIZE];ifstream inFile;cout<<"Enter name of data file: ";cin.getline(filename,SIZE); //文件名读入inFile.open(filename); //与文件关联if(!inFile.is_open()) //打开成功返回true{cout<<"Could not open the file "<<filename<<endl;cout<<"Program terminating.\n";exit(EXIT_FAILURE); //用到cstlib头文件}double value;double sum=0.0;int count=0;inFile>>value;while(inFile.good()) //读入正确,且未到末尾{count++;sum+=value;inFile>>value; //读入数据,相当于cin}if(inFile.eof()) //判断是否结束cout<<"End of file reached.\n";else if(inFile.fail()) //读入数据不符cout<<"Input terminated by data mismatch.\n";elsecout<<"Input terminated for unknow reason.\n";if(count==0)cout<<"No data processed.\n";else{cout<<"Items read: "<<count<<endl;cout<<"Sum: "<<sum<<endl;cout<<"Average: "<<sum/count<<endl;}inFile.close();return 0;}