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();
}
目录
相关文章
|
29天前
|
存储 C++
基于C++的简易文件压缩与解压缩工具设计与实现
基于C++的简易文件压缩与解压缩工具设计与实现
16 3
|
1月前
|
安全 算法 程序员
【C/C++ 文件操作】深入理解C语言中的文件锁定机制
【C/C++ 文件操作】深入理解C语言中的文件锁定机制
33 0
|
1月前
|
Unix 编译器 Linux
【计算机基础 ELF文件】深入探索ELF文件:C++编程中的关键组成部分
【计算机基础 ELF文件】深入探索ELF文件:C++编程中的关键组成部分
50 0
|
19天前
|
人工智能 机器人 C++
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
|
1月前
|
存储 JSON 安全
【C++ JSON库 json值的创建手段】深入探究C++中JSON对象定位与操作:从引用到回调函数
【C++ JSON库 json值的创建手段】深入探究C++中JSON对象定位与操作:从引用到回调函数
66 0
|
1月前
|
Linux C++ iOS开发
【C++ 17 新特性 文件管理】探索C++ Filesystem库:文件和目录操作的全面指南(二)
【C++ 17 新特性 文件管理】探索C++ Filesystem库:文件和目录操作的全面指南
253 2
|
1月前
|
Linux API C++
【C++ 17 新特性 文件管理】探索C++ Filesystem库:文件和目录操作的全面指南(一)
【C++ 17 新特性 文件管理】探索C++ Filesystem库:文件和目录操作的全面指南
320 2
|
24天前
|
C++ Python
【C++/Python】C++调用python文件
【C++/Python】C++调用python文件
|
25天前
|
C语言 C++
C/C++文件读取操作
C/C++文件读取操作
|
30天前
|
存储 算法 数据管理
C++中利用随机策略优化二叉树操作效率的实现方法
C++中利用随机策略优化二叉树操作效率的实现方法
77 1