C++读取写入.txt文件(ifstream/ofstream)—读取指定行,修改指定行,复制文件,清除文件,统计文件行数
2017-07-25 11:38
3415 查看
C++对txt文件的操作是基于fstream/ifstream/ofstream类的,使用时需添加头文件包含:
以下重点在于实现几个操作,关于这一块的基础知识参考:C++文件读写详解(ofstream,ifstream,fstream)
1、统计txt文件行数;
#include<fstream>针对txt文件的操作大体包括基本的读写,读取指定行,修改指定行,复制文件,清除文件,统计文件行数等几种,分别实现如下;
以下重点在于实现几个操作,关于这一块的基础知识参考:C++文件读写详解(ofstream,ifstream,fstream)
1、统计txt文件行数;
/* **统计txt文件行数 */ int CountLines(string 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')) { n++; } ReadFile.close(); return n; } }2、复制txt文件;
/* **复制txt文件 */ void copyTxt(string srcFilename, string dstFilename) { ifstream infile; ofstream outfile; string temp; infile.open(srcFilename, ios::in); outfile.open(dstFilename, ios::trunc | ios::out); if (infile.good()) { while (!infile.eof()) { getline(infile, temp, '\n'); outfile << temp << '\n'; } } infile.close(); outfile.close(); }3、清除txt文件;
/* **清除txt文件 */ void clearTxt(string filename) { ofstream text; text.open(filename, ios::out | ios::trunc);//如果重新设置需要 text.close(); }4、修改指定行数据
/* **修改指定行数据 */ void ResetLine(string file,int line) { int total = CountLines(file); if (line > total || line < 1) { MessageBox(_T("修改超出配置文件行数范围")); return; } string bup = _T(".\\tmp.txt");//备份文件 copyTxt(file,bup); ifstream rfile; ofstream wfile; rfile.open(bup,ios::in); wfile.open(file,ios::out|ios::trunc); string str; int i = 1; while (!rfile.eof()) { if (i == line) { CString strMFC; strMFC.Format(_T("%f %f %f\n"), m_pAssistCam, m_tAssistCam, m_zAssistCam); wfile << strMFC.GetBuffer(0);//写入修改内容 } else { //rfile.getline() getline(rfile, str, '\n'); wfile << str << '\n'; } i++; } rfile.close(); wfile.close(); }5、读取指定行数据
/* **读取txt指定行数据存入string */ string readTxt(string filename, int line) { //line行数限制 1 - lines ifstream text; text.open(filename, ios::in); vector<string> strVec; while (!text.eof()) //行0 - 行lines对应strvect[0] - strvect[lines] { string inbuf; getline(text, inbuf, '\n'); strVec.push_back(inbuf); } return strVec[line - 1]; }
相关文章推荐
- C++读取写入.txt文件(ifstream/ofstream)—读取指定行,修改指定行,复制文件,清除文件,统计文件行数
- C++学习--向txt文件写入数据、读取数据、获取行数以及删除文件
- C++ 标准文件的写入读出(ifstream,ofstream)
- 转自【北漂民工】C++文件读取操作的全部函数讲解fstream(ofstream/ifstream)
- C++ 读取配置文件的 ofstream和ifstream详细用法
- C++文件读写详解(ofstream,ifstream,fstream)
- c++判断硬盘是否连接、修改指定盘符、读取配置文件、获取exe路径
- C++文件读写详解(ofstream,ifstream,fstream)
- C++中Txt文件读取和写入
- C++文件读写详解(ofstream,ifstream,fstream)
- C++文件读写详解(ofstream,ifstream,fstream)
- C++中Txt文件读取和写入
- C++文件读写详解(ofstream,ifstream,fstream)
- C++ ofstream和ifstream详细用法 及文件操作 导入到EXCEL
- c++中ifstream一次读取整个文件
- C++文件读写详解(ofstream,ifstream,fstream)
- C++文件读写详解(ofstream,ifstream,fstream)
- 【c/c++】C++文件读写详解(ofstream,ifstream,fstream)
- C++中Txt文件读取和写入
- C++中Txt文件读取和写入