C++中txt文件的读、写操作介绍

简介: C++中txt文件的读、写操作介绍

我们在日常处理问题时经常要进行数据的读写操作,而这些数据最常用的存储格式就是txt文本了。下面我们就来简单介绍一下如何通过C++对文本中的数据进行处理。


首先我们来引入头文件,C++为我们提供了iostream库(输入输出流,可以理解为in(输入) out(输出) stream(流),取in、out的首字母与stream合成); fstream是stream的子类,为我们提供了操作文件的众多方式(大家可以通过另外一篇文章对此进行更细致的了解)。

/*author: wxc_1998
date: 2019/7/3*/
#include <iostream>  
#include <fstream>  

同时为了程序后续功能的需要,我们还加入了:

#include <vector> //后续使用容器vector需要
#include <math.h>//进行数学运算需要

接着我们主要使用fstream中的两个文件流子类:ifstream和ofstream。

ifstream可以用来打开数据文件,并进行读取操作,ofstream主要用于数据的写出操作。

ifstream

其基本用法为:

ifstream open_file("文件路径");

open_file是ifstream类定义的一个对象,后面可以输入我们想要打开文件的绝对路径或者相对路径(注意:在输入文件路径时应使用“\\”,如"E:\\1\\scores.txt")。


在打开了我们想要读取的数据文件之后,我们可以直接通过运算符“>>”来进行读取操作,这种方式可以跳过空格,逐个读取文件中的所有字符,直到文件尾。

    int temp;
    while(!open_file.eof())
    {
      open_file >> temp;
      my_score.push_back(temp);
    }

除此之外,我们还有一种读取方法是:通过getline函数逐行读取数据。这种方法在对字符串数据文件中比较常用,当然,我们读取了每一行中的数据之后通常还需要对行字符串进行一些其他的操作。

    string line;
    while(!open_file.eof())
    {
      getline(open_file,line);
      all_data.push_back(line);
    }

ofstream

其基本用法与ifstream类似:

ofstream out_file("写出文件路径");

out_file为ofstream类定义的对象名,括号内可以为想写出文件的任意路径。

创建写出文件之后,我们可以通过运算符"<<"来进行数据写出操作。

例如:

  out_file << "min: " << my_min << endl;
  out_file << "max: " << my_max << endl;
  out_file << "ave: " << my_ave << endl;
  out_file << "xigma: " << my_xig << endl;

这种使用方式类似于我们常用的cout显示,同时也可以对输出的格式进行调节以达到满意的效果。

最后我们以一个应用实例来结束本篇博客。

问题: 统计数据文件data.txt中的最大值、最小值并写出到result.txt中。

data.txt文件,第一个数代表数据的个数。

6
12 20 7 18 29 10

程序源代码:

/*author: wxc_1998
date: 2019/7/3*/
#include <fstream>  
#include <iostream>  
#include <vector>
using namespace std;
void main()
{
  vector<int> my_data;
  int my_size = 0;
  ifstream open_file("文件路径\\data.txt");
  /*-------------------------读取数据文件------------------------------*/
  if(open_file)
  {
    // cout << "成功打开文件!" <<  endl;
    open_file >> my_size;
    int temp;
    while(!open_file.eof())
    {
      open_file >> temp;
      my_data.push_back(temp);
    }
  }
  else
    cout << "打开文件时出现错误!" << endl;
  /*-------------------------求取最大最小值------------------------------*/
  int my_min = 1000, my_max = -1, my_sum = 0;
  double my_ave = 0.0;
  for (int i = 0; i != my_data.size(); ++i)
  {
    if(my_min > my_data[i])
      my_min = my_data[i];
    if(my_max < my_data[i])
      my_max = my_data[i];
    my_sum += my_data[i];
  }
  my_ave = (double)my_sum/(double)my_data.size();
  cout << "min: " << my_min << endl;
  cout << "max: " << my_max << endl;
  cout << "ave: " << my_ave << endl;
  ofstream out_file("文件路径\\result.txt");
  out_file << "min: " << my_min << endl;
  out_file << "max: " << my_max << endl;
  out_file << "ave: " << my_ave << endl;
  open_file.close();
  out_file.close();
  cout << endl << "press any key to continue!";
    cin.clear();
    cin.sync();
    cin.get();
}
目录
相关文章
|
2月前
|
Linux C++
Linux c/c++文件的基本操作
在Linux环境下使用C/C++进行文件的基本操作,包括文件的创建、写入、读取、关闭以及文件描述符的定位。
23 0
Linux c/c++文件的基本操作
|
3月前
|
C++ 内存技术
[转]Visual C++内嵌swf文件并播放
[转]Visual C++内嵌swf文件并播放
|
2月前
|
Linux C++
Linux c/c++文件虚拟内存映射
这篇文章介绍了在Linux环境下,如何使用虚拟内存映射技术来提高文件读写的速度,并通过C/C++代码示例展示了文件映射的整个流程。
59 0
|
2月前
|
Linux C++
Linux c/c++文件移动
这篇文章介绍了在Linux环境下,使用C/C++语言通过命令方式和文件操作方式实现文件移动的方法。
81 0
|
3月前
|
Linux API C++
超级好用的C++实用库之文件目录操作
超级好用的C++实用库之文件目录操作
39 0
|
3月前
|
JavaScript 前端开发 测试技术
一个google Test文件C++语言案例
这篇文章我们来介绍一下真正的C++语言如何用GTest来实现单元测试。
25 0
|
4月前
|
存储 算法 C++
【C++】C++ QT实现Huffman编码器与解码器(源码+课程论文+文件)【独一无二】
【C++】C++ QT实现Huffman编码器与解码器(源码+课程论文+文件)【独一无二】
106 4
|
4月前
|
监控 编译器 C++
【代码讲解】【C/C++】获取文件最后修改的时间(系统时间)
【代码讲解】【C/C++】获取文件最后修改的时间(系统时间)
120 0
|
4月前
|
安全 C++ Windows
Windows下C++使用gRPC(Qt和VS,含文件包和使用方法)
Windows下C++使用gRPC(Qt和VS,含文件包和使用方法)
|
4月前
|
C++
C++通过文件指针获取文件大小
C++通过文件指针获取文件大小
32 0