(10条消息) C++读取写入.txt文件(ifstream/ofstream)

C++对txt文件的操作是基于fstream/ifstream/ofstream类的,使用时需添加头文件包含:

#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];
}
(0)

相关推荐

  • C++文件操作:打开文件和写入文件

    如果程序的运行结果仅仅显示在屏幕上,当要再次查看结果时,必须将程序重新运行一遍:而且,这个结果也不能被保留. 如果希望程序的运行结果能够永久保留下来,供随时查阅或取用,则需要将其保存在文件中. 文件分 ...

  • C++ 高级教程:C++ 文件和流

    到目前为止,我们已经使用了 iostream 标准库,它提供了 cin 和 cout 方法分别用于从标准输入读取流和向标准输出写入流. 本教程介绍如何从文件读取流和向文件写入流.这就需要用到 C++ ...

  • (38条消息) Python读取写入TXT正确姿势

    Python 2.7 IDE Pycharm 5.0.3 爬下来,解析,存储,分析,可视化--一气呵成,当然我还在学前面三个哈哈哈 直奔主题 1.自己写入txt 直接上核心代码: with open( ...

  • (38条消息) python读取、写入txt文本内容

    读取txt文本 python常用的读取文件函数有三种read().readline().readlines() 以读取上述txt为例,看一下三者的区别 read()    一次性读全部内容 一次性读取 ...

  • (38条消息) python读取txt文件(多种方法)

    原始数据:唐诗一百首.txt 方法1: f=open('唐诗一百首.txt', encoding='gbk')txt=[]for line in f: txt.append(line.strip()) ...

  • (38条消息) python 读取txt中文文本

    txt文本的存储形式有四种ANSI,UTF-8,Unicode,Unicode big endian.后面两种比较少见,说说前面两种吧. 普通的打开文件的操作是这样的: # -*- coding: u ...

  • (10条消息) linux CMakeCache.txt,Cmake入门教程

    (10条消息) linux CMakeCache.txt,Cmake入门教程

  • (7条消息) gcc 如何编译cpp文件啊

    文章目录 gcc 如何编译cpp文件啊 gcc编译C++程序 多个源文件生成可执行程序 源文件生成对象文件 编译预处理 生成汇编代码 创建静态库 gcc 如何编译cpp文件啊 /* hello.c * ...

  • (10条消息) PID控制详解

    PID控制详解 一.PID控制简介 PID( Proportional Integral Derivative)控制是最早发展起来的控制策略之一,由于其算法简单.鲁棒性好和可靠性高,被广泛应用于工业过 ...

  • (10条消息) 用C语言实现PID控制代码

    PID控制算法的C语言实现一 PID算法原理 最近两天在考虑一般控制算法的C语言实现问题,发现网络上尚没有一套完整的比较体系的讲解.于是总结了几天,整理一套思路分享给大家. 在工业应用中PID及其衍生 ...

  • (10条消息) Altium Designer(AD)使用技巧总结(更新ing)

    Altium Designer 作为一款PCB绘制软件,凭借其简单易上手.功能强大等优点深受硬件工程师们的喜爱,作为一位AD初学者对AD中的功能进行一下总结(当然不是全部介绍,根据我学到的进行整理), ...