c++ 读写文件

来源:互联网 发布:ios app制作软件 编辑:程序博客网 时间:2024/06/06 00:14


写文件

#include <iostream>#include <fstream>using namespace std;int main(){ofstream out;out.open("com.txt",ios::trunc); //ios::trunc表示在打开文件前将文件清空,由于是写入,文件不存在则创建int i;char a='a';for(i=1;i<=26;i++)//将26个数字及英文字母写入文件{   if(i<10)   {    out<<"0"<<i<<"\t"<<a<<"\n";    a++;   }   else   {    out<<i<<"\t"<<a<<"\n";    a++;   }}out.close();//关闭文件return 0;}


读文件
#include <iostream>#include <fstream>using namespace std;int main(){char buffer[256];fstream out;out.open("com.txt",ios::in);cout<<"com.txt"<<" 的内容如下:"<<endl;while(!out.eof()){   out.getline(buffer,256,'\n');//getline(char *,int,char) 表示该行字符达到256个或遇到换行就结束   cout<<buffer<<endl;}out.close();cin.get();//cin.get() 是用来读取回车键的,如果没这一行,输出的结果一闪就消失了return 0;}


读取某一行

#include <iostream>#include <fstream>#include <string>using namespace std;int CountLines(char *filename){ifstream ReadFile;int n=0;string tmp;ReadFile.open(filename,ios::in);//ios::in 表示以只读的方式读取文件if(ReadFile.fail())//文件打开失败:返回0{   return 0;}else//文件存在{   while(getline(ReadFile,tmp))   {    n++;   }   return n;}ReadFile.close();}string ReadLine(char *filename,int line){int lines,i=0;string temp;fstream file;file.open(filename,ios::in);lines=CountLines(filename);if(line<=0){   return "Error 1: 行数错误,不能为0或负数。";}if(file.fail()){   return "Error 2: 文件不存在。";}if(line>lines){   return "Error 3: 行数超出文件长度。";}while(getline(file,temp)&&i<line-1){   i++;}file.close();return temp;}int  main(){int l;char filename[256];cout<<"请输入文件名:"<<endl;cin>>filename;cout<<"\n请输入要读取的行数:"<<endl;cin>>l;cout<<ReadLine(filename,l);cin.get();cin.get();return 0;}

控制台输出:

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc  pateo@pateo-B86N53X:~/work/study$ ./main 请输入文件名:com.txt 请输入要读取的行数:1212l

读取整个有多少行

#include <iostream>#include <fstream>#include <string>using namespace std;int CountLines(char *filename){ifstream ReadFile;int n=0;char line[512];string temp;ReadFile.open(filename,ios::in);//ios::in 表示以只读的方式读取文件if(ReadFile.fail())//文件打开失败:返回0{   return 0;}else//文件存在{while(getline(ReadFile,temp)){   n++;}    return n;}ReadFile.close();}int main(){cout<<"comn.txt的行数为: "<<CountLines("com.txt")<<endl;cin.get();return 0;}

说明:

ios::app 添加到文件尾
ios::ate 把文件标志放在末尾而非起始。
ios::trunc 默认. 截断并覆写文件。
ios::nocreate 文件不存在也不创建。
ios::noreplace 文件存在则失败。

 ios::binary 以二进制模式进行IO操作


ios_base::beg ——文件开始位置

ios_base::cur ——文件当前位置

ios_base::end ——文件末尾位置

下面以seekg为例说明一下指针移动的方法:

file.seekg(3)   ——指针移动到第三个字符的位置

file.seekg(ios_base::beg) ——指针移动到文件开头

file.seekg(ios_base::end) ——指针移动到文件末尾

file.seekg(-3,ios_base::cur) ——指针当前位置向前移动三个字符

file.seekg(3,ios_base::cur) ——指针当前位置向后移动三个字符

file.seekg(3,file.tellg()) ——指针当前位置向后移动三个字符

file.seekg(file.tellg()+3) ——指针当前位置向后移动三个字符


对文件操作完毕后别忘了关闭文件

file.close();





原创粉丝点击