C++文件操作

来源:互联网 发布:双十一抢购软件 编辑:程序博客网 时间:2024/06/01 17:35

1、头文件介绍

#include <iostream>//标准输入输出流
#include <fstream>//派生自iostream,包括ifstream和ofstream

using namespace std;//都在名称空间std中,别忘了加上

2、打开文件

const char* fileName="1.txt";//要打开的文件名,可以使路径名,默认情况下是所建工程下

fstream类派生了两个类ifstream\ofstream

fstream f(fileName,参数二);

参数二有多种形式,这里只看主要用的几种:

ios_base::in//打开文件用于读

ios_base::out//打开文件用于写

ios_base::app//打开文件,用于追加(不覆盖原有文件,默认情况是覆盖)

ios_base::binary//以二进制方式打开文件,默认情况下是文本文件方式

例:

fstream i(fileName,ios_base::in|ios_base::out);//打开文件用于读写(既可读也可写)

ifstream in(fileName,ios_base::binary|ios_base::in);//以二进制方式打开文件用于读

ofstream out(fileName,ios_base::out|ios_base::app);//打开文件用于追加

3、由于派生自iostream,很多其他的方法和iostream一样

比如:seekg()\eof()\clear()……

4、一些文件操作的例子

读写二进制文件

#include "stdafx.h"#include <iostream>#include <fstream>#include <string>using namespace std;struct plant{char name[20];int age;char num[10];};int _tmain(int argc, _TCHAR* argv[]){           plant p;p.name[20]=(char)"yao";p.age=21;p.num[10]=(char)"0950420011";ofstream pf("data.dat",ios_base::out|ios_base::app|ios_base::binary);pf.write((char*)&p,sizeof(p));pf.close();ifstream in("data.dat",ios_base::in|ios_base::binary);plant p1;in.read((char*)&p1,sizeof(p1));in.close();cout<<p1.age<<endl<<p1.name<<endl<<p1.num<<endl;           return 0;}

循环读取指定文件的指定行

 

#include "stdafx.h"#include <iostream>#include <fstream>#include <string>#include <sstream>#include <time.h>//#include "iomanip.h"//const char* file="data.dat"using namespace std;const int MAX=1024;const int M=40;//#define //////======自定义函数判断输入是否为数字=======///////////bool IsDigital(const string &str){//int flag=0;//字符串中数字的个数if(str=="")return false;const char* p=str.c_str();int length=str.length();for(int i=0;i<length;i++,p++){if((*p<='0')||(*p>='9'))return false;}    return true;}int _tmain(int argc, _TCHAR* argv[]){
       char c;       do       {fstream f;cout<<"请输入文件名称(注:先把你要打开的文件复制到本程序下,如:'file.txt')"<<endl;int flag=0;
do{string str;if(flag){f.clear();cout<<"输入文件不存在,请重新输入:"<<endl;}cin>>str;const char* file=str.c_str();//string text="";f.open(file,ios_base::in|ios_base::out|ios_base::binary);flag++;}while(!f.is_open());int lineCount=1;//记录当前文件的总行数int SumByte=0;//记录文件的总大小while(!f.eof()){char c;c=f.get();if(c=='\n')lineCount++;SumByte++;}f.clear();float kb;kb=(float)SumByte/1024;cout<<"当前文件的字节数是:"<<SumByte<<" Bit"<<endl;cout<<"当前文件的总大小是:"<<kb<<" KB"<<endl;cout<<"当前文件的总行数是: "<<lineCount<<endl;cout<<"/*===================================================*/\n/*===================================================*/"<<endl;int line;string str_line;    cout<<"\n接下来请输入你要读取文件的行数:\n";    cin>>str_line;while(!IsDigital(str_line)){cout<<"输入格式不正确,请重新输入:\n";cin>>str_line;}line=atoi(str_line.c_str());cout<<"当前的line值 :"<<line<<endl;while((line<=0)||(line>lineCount)){cout<<"输入数据有误(1--"<<lineCount<<"间),请重新输入:\n";cin>>line;}cout<<"你选择了输出第"<<line<<"行"<<endl;//line=cin.get();//string strOut;//输出内容cout<<"/*===================================================*/\n/*===================================================*/"<<endl;int count=0;char ch;f.seekg(0);//指向文件开始位置for(int i=1;i<line;i++){/*do{//f.read((char*)&ch,sizeof ch);ch=f.get();count++;}while(ch!='\n');*/while(f.read((char*)&ch,sizeof ch)){count++;if(ch=='\n')break;}}cout<<"输出count的值:"<<endl;cout<<count<<endl;f.seekg(count);//跳转到所选行数的开头cout<<"/*===================================================*/\n"<<endl;cout<<"\n接下来输出你所选择的行:\n";cout<<"/*===================================================*/\n"<<endl;char a;while(f.read((char*)&a,sizeof a)){cout<<a;if(a=='\n')break;}cout<<"////////////////////////////////////////////////////////////////"<<endl;cout<<"是否继续打开文件?是-选择y:否-按任意键结束(除y)"<<endl;cin>>c;}while(c=='y');   // char p;//cin>>p;return 0;}

复制文件

#include "stdafx.h"#include <iostream>#include <fstream>using namespace std;const char* file1="1.txt";const char* file2="2.txt";//把文件1的内容写到文件2的末尾int _tmain(int argc, _TCHAR* argv[]){    ifstream in(file1);//默认方式打开文件1进行读    ofstream out(file2,ios_base::out|ios_base::app);//打开文件2进行写入(app为追加)    out<<in.rdbuf();//将文件1的内容输入到文件2的流中    in.close();//关闭文件流    out.close();    return 0;}


C++文件操作就介绍到这里

原创粉丝点击