无论读取还是打印,都需要在开始引入<fstream>头文件,我们需要用到里面的对于文件的函数操作。

文件读取

首先来说从文件中读取。我们定位文件所在具体位置,指向目标文件,这里的myfile我把它理解为一个接收add_item.txt文件中数据的临时变量,所以名字你可以随便取(如果你要取关键字当我没说)。

ifstream myfile("H library/1/data/add_item.txt");

我这里的目标文件中存储的是两条本地编写的Sales_item类型数据,包含书籍的ISBN号、销售数量,销售单价,操作myfile变量将数据存入创建的一个该类型的数组book,在后面对book数组中的数据进行处理即可。

下面贴出我的代码,该小程序完成的是从目标文件中读取数据,累加后输出处理过的数据。

#include <iostream>
#include <fstream>
#include "H library/1/Sales_item.h"
using namespace std;int main() {Sales_item book[2];ifstream myfile("H library/1/data/add_item.txt");for(int i=0; i<2; ++i)myfile >> book[i];    //将文件中数据读取到book数组方便后续操作for(int i=0; i<2; ++i)cout << book[i] << endl;cout << endl;cout << book[0]+book[1] << endl;    //Sales_item类对象的相关操作全都定义在都文件中myfile.close();    //文件使用完一定记得关闭return 0;
}

同一编号的书籍可以相加,进行编号去重,销量汇总,计算均价后打印在显示器上。

文件打印

再来说一下输出数据到外部文件中。我们的方式是从键盘读取用户输入的字符串,C++中输入字符串我建议最好使用cin.getline()方法,它可以保留你输入字符串的空格,如若你使用cin>>s(char c[],或者string s都可以这样键入,建议使用char s[]的方法,优点下面看),则程序会自动省略第一个空格以后的剩余字符串,当然,如果你的输出结果不包含空格,你也可以直接使用cin>>s来键入。

接下来便是把s中的内容转存到目标文件中,我们先在文件夹中创建一个空白文件,然后通过ofstream语句定位到文件具体位置。

ofstream outfile("H library/1//data/test.txt");

打印到文件中同样有两种方式:outfile.put(s[i]) 和 outfile<<s,前者会逐个打印字符串中的每个字符,如果用户想对字符进行筛选过滤,也同样方便加判断条件对每个字符进行甄别,而后者则是一次性将所有字符打印到文件中。同样,打印完记得关闭文件连接。

#include <iostream>
#include <fstream>
#include <string>
#define MAX 100
using namespace std;int main(int argc, char** argv) {ofstream outfile("H library/1//data/test.txt");if(!outfile){cout << "Unable to open otfile";exit(1); // terminate with error}char s[80];cin.getline(s,80);   //可以保留空格字符
//  cin >> s;  //自动省略第一个空格以后的字符 for(int i=0; s[i]!=0; i++)     //对字符一个一个的处理,直到遇到'/0'为止
//        if(s[i]>=65 && s[i]<=90 || s[i]>=97 && s[i]<=122 || s[i]==32)   //保证字符是大小写字母和空格 outfile.put(s[i]);//将字母字符存入磁盘文件
//          outfile << s << endl;   //一个汉字占两个字符空间 cout << s;outfile << endl << "--------------" << endl;outfile.close();return 0;
}

用outfile<<s方法可以验证每个汉字字符在C++语言中占两个字符,比如下面的四个汉字,通过上述的程序最后打印了9次(空格占一个字符)。

文件追加打印

可以将内容输出到文件中后,新的问题又来了——如何保持文件原内容,在末尾追加打印内容呢?

上面的方式你每运行一次,目标文件内所有内容会被覆盖掉,这时候如果想要在原文件末尾添加内容,需要改变ofstream方法中的参数形式。在地址后加一句ofstream::app(也可以是ios::app,两者作用相同),当目标文件存在时,在文件末尾添加新键入的内容,若不存在,则在目标地址下创建文件,并打印内容上去。

ofstream out1("H library/1//data/test.txt",ios::app);  //ofstream::app
if(!out1){cout << "Unable to open otfile";exit(1); // terminate with error
}char s[80];
cin.getline(s,MAX);
for(int i=0; s[i]!=0; i++)out1.put(s[i]);    //读入到文件尾
cout << s;
out1 << endl << "--------------" << endl;
out1.close();

C++从文件中读取数据,打印(追加打印)至文件相关推荐

  1. python从文件中读取数据时出现错误_python-从文件中读取数据

    一.读取整个文件 learnFile.py 绝对路径 #coding=UTF-8 importsys reload(sys) with open(r'C:\Users\zhujiachun\Deskt ...

  2. 【Python】从文件中读取数据

    从文件中读取数据 1.1 读取整个文件 要读取文件,需要一个包含几行文本的文件(文件PI_DESC.txt与file_reader.py在同一目录下) PI_DESC.txt 3.1415926535 ...

  3. python读文件和写文件-python开发--从文件中读取数据和写入文件

    #! /usr/bin/env python -*- coding:utf-8 -*- """ @Author:gcan @Email:1528667112@qq.com ...

  4. python print(len(pi_string))_Python如何从文件中读取数据

    从文件中读取数据 1. 读取整个文件 要读取文件,首先来创建一个文件: 然后打开并读取这个文件,再将其内容显示到屏幕上:file_reader.py with open('pi_digits.txt' ...

  5. python从文件中读取数据_【Python】从文件中读取数据

    从文件中读取数据 1.1 读取整个文件 要读取文件,需要一个包含几行文本的文件(文件PI_DESC.txt与file_reader.py在同一目录下) PI_DESC.txt 3.1415926535 ...

  6. 安卓学习专栏——从文件中读取数据、openFileInput(图文+代码)

    步骤 系列文章 前言 1.实现效果 1.1启动时初始化填写读取的数据,或是点击读取显示数据 1.2保存新数据 1.3点击读取按钮读取数据 1.4重启查看效果 2.xml外观文件 3.java功能文件 ...

  7. POI:从Excel文件中读取数据,向Excel文件中写入数据,将Excel表格中的数据插入数据库,将数据库中的数据添加到Excel表

    POI 简介: POI是Apache软件基金会用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能. ...

  8. vc++从txt文件中读取数据

    数值分析课上老师说要将数据写在txt文件上,然后让程序从txt文件中读取数据.让本来C++已经遗忘了很久的我们无从下手,在网上也查看了很多,发现大多都是扯淡,放在VC++编辑器上发现并不能运行,不知道 ...

  9. TF从文件中读取数据

    从文件中读取数据 在TensorFlow中进行模型训练时,在官网给出的三种读取方式,中最好的文件读取方式就是将利用队列进行文件读取,而且步骤有两步: 把样本数据写入TFRecords二进制文件 从队列 ...

最新文章

  1. golang库context学习
  2. R聚类(整群)抽样(Cluster Sampling)
  3. C语言-链表的创建头插法和尾插法(有无头节点)
  4. jQuery动画与事件概念以及语法
  5. android关机背景,鍵盤消失后的Android白色背景
  6. 通过这个免费的,由23部分组成的互动课程,学习ES6 +
  7. rocketmq支持最大消息_分布式消息引擎Apache RocketMQ最佳实践
  8. 用来理解 Java 编程语言的 8 个图表
  9. 如何编写优质的API文档
  10. fpga与三八译码器(BASYS3 VIVADO18)
  11. 创建三维零件的DH坐标系
  12. Redies tutorial
  13. 网络安全之红蓝对抗实战
  14. Flutter报setState() or markNeedsBuild() called during build.错误解决办法
  15. 明源软件诚聘.NET软件开发工程师
  16. ASP.NET压力测试
  17. # C语言使用树设计族谱
  18. LiteFlowNet3:解决对应歧义以获得更准确的光流估计
  19. Python入门学习小记:100以内素数/质数之和
  20. BootStrap4中使用图标

热门文章

  1. 百度移动优化:关于移动端点击图片放大有多少人注意?
  2. 频率选择性衰落、时间选择性衰落
  3. [转]辨别常见与不常见音乐文件格式的质量好坏!
  4. SQLServer查询数据
  5. 网站使用手机相机_手机如何修改证件照片大小和分辨率
  6. 华为推出智能眼镜;苹果首次在俄罗斯被起诉
  7. 国家计算机报名730,730分学霸杨晨煜被清华智班录取!学习的专业是......
  8. 一线OA品牌之心通达OA综合指标
  9. linux文件权限的例子,Linux基础教程之linux文件权限深度解读
  10. html颜色对应卡,PANTONE色卡