第九站(17天):C++IO流

文件IO流 

 对象:文件,控制台,特定数据类型stringstream

(写数据输出流out,读数据输入流in)

ofstream :

ofstream outfile;//输出流:从键盘输出数据,写入到文件
        //文件打开默认位ios::out//字节覆盖写
        //可以截断设置为:ios::out | ios::trunc//将之前文件全部截断为0,重新开始写

//cout也是一种标准输出流
        cout << "请输入姓名: ";
//cin是标准输入流,将控制台的数据读取,输入到变量name中
        cin >> name;

#include <iostream>;
#include <fstream>using namespace std;int main(void) {string name;int age = 0;ofstream outfile;//输出流:从键盘输出数据,写入到文件//文件打开默认位ios::out//字节覆盖写//可以截断设置为:ios::out | ios::trunc//将之前文件全部截断为0,重新开始写outfile.open("user.txt",ios::out | ios::trunc);while (true){//cout也是一种标准输出流cout << "请输入姓名: ";//cin是标准输入流,将控制台的数据读取,输入到变量name中cin >> name;if (cin.eof()){break;}outfile << name << "\t";cout << "请输入年龄: ";cin >> age;outfile << age<<endl;}outfile.close();system("pause");return 0;
}

ifstream:

 ifstream infile;//输入流:从文件读取数据,再由cout输出流,写到控制台 

#include <iostream>;
#include <fstream>using namespace std;int main(void) {string name;int age;ifstream infile;infile.open("user.txt");while (true) {infile >> name;if (infile.eof()){break;}cout << name << "\t";infile >> age;cout << age << endl;}infile.close();system("pause");return 0;
}

 用文件流写读二进制文件(write)

note++查看二进制文件的插件:

 

 

#include <iostream>
#include <fstream>
using namespace std;int main(void) {string name;int age;ofstream outfile;outfile.open("user.dat", ios::out | ios::trunc | ios::binary);while (1){cout << "请输入姓名:";cin >> name;if (cin.eof()) {break;}outfile << name<<"\t";//这里的age是整形的,在输出流之后自动被转换成字符串了//这里写age需要指定格式cout << "请输入年龄:";cin >> age;outfile.write((char*)&age, sizeof(int));cout << endl;}
outfile.close();
return 0;
}

 用文件流读取二进制文件(read)

 

#include <iostream>
#include <fstream>
using namespace std;int main(void) {string name;int age;ifstream infile;infile.open("user.dat", ios::in | ios::binary);while (1) {infile >> name;if (infile.eof()) {break;}cout << "姓名:" << name << "\t";char tmp;infile.read(&tmp, sizeof(tmp));infile.read((char*)&age, sizeof(age));cout << "年龄:" << age << endl;}
infile.close();
return 0;
}

 指定格式进行写文件

 

#include <iostream>
#include <sstream>
#include <fstream>using namespace std;int main(void) {string name;int age;ofstream outfile;outfile.open("user.txt", ios::out | ios::trunc);while (1){cout << "请输入姓名:";cin >> name;if (cin.eof()) {break;}cout << "请输入年龄:";cin >> age;stringstream res;res << "姓名:" << name << "\t\t\t年龄:" << age << endl;//将数据输入字符流,转成字符串outfile << res.str();cout << endl;}outfile.close();return 0;
}

指定格式进行读取文件 

用C语言的sscanf_s(对象,"指定格式",数据);

#include <iostream>
#include <sstream>
#include <fstream>using namespace std;int main(void) {string line;int age;char name[32];ifstream infile;infile.open("user.txt", ios::in);while (1) {getline(infile,line);if (infile.eof()) {break;}//用空格去取代制表符,这个格式和文件一行的格式一样sscanf_s(line.c_str(), "姓名:%s 年龄:%d", name,sizeof(name), &age,sizeof(int));cout << "姓名: " << name << "\t\t\t年龄: " << age << endl;}infile.close();return 0;
}

文件的随机读写

设置输入流的位置seekg(偏移量,起始位置(beg,cur,end))

 

#include <iostream>
#include <fstream>
#include <string>
using namespace std;int main() {//返回文件最后五十个字节的数据ifstream infile;infile.open("偏移量.cpp");if (!infile.is_open()) {cout << "文件打开失败!" << endl;return -1;}infile.seekg(-50, infile.end);while (!infile.eof()) {string name;getline(infile, name);cout << name << endl;}infile.close();return 0;
}

设置输出流的位置seekp(偏移量,起始位置(beg,cur,end))

  

#include <iostream>
#include <fstream>
#include <string>
using namespace std;int main() {string name;ofstream outfile;outfile.open("偏移量.cpp",ios::app);if (!outfile.is_open()) {cout << "文件打开失败!" << endl;return -1;}cout << "请输入一段话:";cin >> name;outfile.seekp(0, outfile.end);outfile << name;outfile.close();return 0;
}//爱上大额女权

tellg,返回该输入流的当前位置

 距离文件起始位置的偏移量,计算大小

 

#include <iostream>
#include <fstream>
#include <string>
using namespace std;int main() {ifstream infile;infile.open("偏移量.cpp");if (!infile.is_open()) {cout << "文件打开失败!" << endl;return -1;}infile.seekg(0, infile.end);cout <<"文件的大小:"<< infile.tellg() << endl;infile.close();return 0;
}

文件读写小练习

输入任意多个整数 , 把这些数据保存到文件 data.txt .
如果在输入的过程中 , 输入错误 , 则提示用户重新输入 .
指导用户输入结束 ( ctrl + z)
[ 每行最多保存 10 个整数 ]

//将标准输入缓冲区cin的所有数据都清空,同时也会清除判定符号'\n'
cin.ignore(std::numeric_limits<streamsize>::max(), '\n'); 

#include <iostream>
#include <fstream>using namespace std;
/*
输入任意多个整数, 把这些数据保存到文件 data.txt 中. 
如果在输入的过程中, 输入错误, 则提示用户重新输入.
指导用户输入结束(按 ctrl + z)[每行最多保存 10 个整数]
*/
int main(void) {int num;//s输入的数据int n = 0;//用来计数ofstream stream;stream.open("data.txt",ios::out|ios::trunc);if (!stream.is_open()) {cout << "文件打开失败!" << endl;exit(1);}//开始输入数据while(1){cout << "请输入一个整数:" ;cin >> num;if (cin.eof()){break;}if (cin.fail()){cout << "输入错误请重新输入:";cin.clear();//将标准输入缓冲区cin的所有数据都清空,同时也会清除判定符号'\n'cin.ignore(std::numeric_limits<streamsize>::max(), '\n');cin >> num;}stream << num <<" ";if ((++n)%10==0){stream<< endl;}}stream.close();
}

 从练习 2 中的 num.txt 文件读取各个整数, 打印出最大值和最小值, 以及平均值.

 

#include<iostream>;
#include <fstream>
using namespace std;int main(void) {int max, min, n = 0, sum = 0;int num;//使用输入流读取文件ifstream stream;stream.open("data.txt");if (!stream.is_open()){cout << "文件打开失败!" << endl;exit(1);}stream >> num;max = num;min = num;sum += num;n++;while (1){stream >> num;if (stream.eof()){break;}if (num>max){max = num;}else if(num<min){min = num;}sum += num;n++;}cout << "max:" << max << endl;cout << "min:" << min << endl;cout << "avg:" << sum / n << endl;cout << "n=" << n << endl;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/240544.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年1月【ORACLE战报】| 新年第一波OCP证书来了!

相关文章&#xff1a; 2023年12月【考试战报】|ORACLE OCP 19C考试通过 2023年10月【考试战报】|ORACLE OCP 19C考试通过 2023.7月最新OCP考试通过|微思-ORACLE官方授权中心 OCP 19C题库稳定&#xff01;https://download.csdn.net/download/XMWS_IT/88309681?ops_request_…

Midjourney Prompt 常用参数列表

完整参数列表 参数名称调用方法使用案例注意事项V5V4V3niji版本在关键词后加空格&#xff0c;然后带上版本参数&#xff1a; --v 或者 —v--version 或者 —versionvibrant california poppies --v 5版本仅支持 1、2、3、4、5。长宽比在关键词后加空格&#xff0c;然后带上长…

【MySQL】权限控制

DCL-权限控制 查询权限 show grants for 用户名主机名;授予权限 grant 权限列表 on 数据库名.表名 to 用户名主机名;grant all on test.* to user%; %是通配符&#xff0c;表示任意主机。撤销权限 revoke 权限列表 on 数据库名.表名 from 用户名主机名;revoke all on test.*…

Angular系列教程之zone.js和NgZone

文章目录 什么是zone.jsZone的工作原理Zone的常见用途NgZone&#xff1a;Angular中的zone.js使用NgZone使用NgZone执行代码使用NgZone外部检测 结论 什么是zone.js 在Angular中&#xff0c;zone.js是一个非常重要的库&#xff0c;它为我们提供了一种跟踪和管理异步操作的机制。…

dubbo入门案例!!!

入门案例之前我们先介绍一下&#xff1a;zookeeper。 Zookeeper是Apacahe Hadoop的子项目&#xff0c;可以为分布式应用程序协调服务&#xff0c;适合作为Dubbo服务的注册中心&#xff0c;负责服务地址的注册与查找&#xff0c;相当于目录服务&#xff0c;服务提供者和消费者只…

阿里云云原生助力安永创新驱动力实践探索

云原生正在成为新质生产力变革的核心要素和企业创新的数字基础设施。2023 年 12 月 1 日&#xff0c;由中国信通院举办的“2023 云原生产业大会”在北京召开。在大会“阿里云云原生”专场&#xff0c;安永科技咨询合伙人王祺分享了对云原生市场的总览及趋势洞见&#xff0c;及安…

数美点选验证协议全面剖析

文章目录 目标网站分析请求动态JS无法调试代码混淆处理conf请求分析分析fverify请求整体代码分析getEncryptContent函数分析分析其他参数分析坐标算法 结束 目标网站 aHR0cHM6Ly9zZWN1cmUuZWxvbmcuY29tL3Bhc3Nwb3J0L2xvZ2luX2NuLmh0bWw/bmV4dHVybD1odHRwczovL3d3dy5lbG9uZy5jb…

XSS漏洞:xss.haozi.me靶场通关

xss系列往期文章&#xff1a; 初识XSS漏洞-CSDN博客 利用XSS漏洞打cookie-CSDN博客 XSS漏洞&#xff1a;xss-labs靶场通关-CSDN博客 XSS漏洞&#xff1a;prompt.mi靶场通关-CSDN博客 目录 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C…

MySQL窗口函数(MySQL Window Functions)

1、窗口函数基本概念 官网地址&#xff1a;https://dev.mysql.com/doc/refman/8.0/en/window-functions.html 窗口可以理解为 记录集合&#xff0c;窗口函数就是在满足某种条件的记录集合上执行的特殊函数。 即&#xff1a;每条记录都要在此窗口内执行函数。 静态窗口&#x…

c#异形窗体遮罩效果

c#异形窗体遮罩效果&#xff0c;移动&#xff0c;关闭&#xff0c;最大化&#xff0c;最小化&#xff0c;还原操作 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D…

C++核心编程——文件操作

本专栏记录C学习过程包括C基础以及数据结构和算法&#xff0c;其中第一部分计划时间一个月&#xff0c;主要跟着黑马视频教程&#xff0c;学习路线如下&#xff0c;不定时更新&#xff0c;欢迎关注。 当前章节处于&#xff1a; ---------第1阶段-C基础入门 ---------第2阶段实战…

蓝桥杯备赛 day 3 —— 高精度(C/C++,零基础,配图)

目录 &#x1f308;前言&#xff1a; &#x1f4c1; 高精度的概念 &#x1f4c1; 高精度加法和其模板 &#x1f4c1; 高精度减法和其模板 &#x1f4c1; 高精度乘法和其模板 &#x1f4c1; 高精度除法和其模板 &#x1f4c1; 总结 &#x1f308;前言&#xff1a; 这篇文…

RabbitMQ常见问题之高可用

文章目录 一、集群分类二、普通集群搭建1. 准备2. 配置3. 运行 三、镜像集群1. 介绍2. 启用方式3. 测试 四、仲裁队列1. 介绍2. 创建 五、Java连接RabbitMQ集群方式 一、集群分类 RabbitMQ的是基于Erlang语言编写,而Erlang又是一个面向并发的语言,天然支持集群模式。RabbitMQ的…

vue3实现动态侧边菜单栏的几种方式总结

基于自建json数据的动态侧边菜单栏 后端接口json数据 src/api/menuList.js const menuList [{url: ,name: 人员管理,icon: icon-renyuan,menuId: 1,children: [{url: /user,name: 用户管理,icon: icon-jurassic_user,menuId: 1001,children: []},{url: /role,name: 角色管…

vite 打包优化

✨专栏介绍 在当今数字化时代&#xff0c;Web应用程序已经成为了人们生活和工作中不可或缺的一部分。而要构建出令人印象深刻且功能强大的Web应用程序&#xff0c;就需要掌握一系列前端技术。前端技术涵盖了HTML、CSS和JavaScript等核心技术&#xff0c;以及各种框架、库和工具…

一篇综述洞悉医学大型语言模型的原理,应用和挑战

在过去的一年中&#xff0c;随着 GPT-4、LLaMA、Mistral&#xff0c;PaLM 等先进技术的突飞猛进&#xff0c;大型语言模型&#xff08;Large Language Models&#xff09;已经引领全球人工智能进入了一个全新的基础模型时代&#xff0c;这一时代不仅开启了技术创新的新篇章&…

opencv多张图片实现全景拼接

最近camera项目需要用到全景拼接&#xff0c;故此查阅大量资料&#xff0c;终于将此功能应用在实际项目上&#xff0c;下面总结一下此过程中遇到的一些问题及解决方式&#xff0c;同时也会将源码附在结尾处&#xff0c;供大家参考&#xff0c;本文采用的opencv版本为3.4.12。 首…

Base64编码原理解析

文章目录 一、Base64Base64编码的原理如下&#xff1a;以字符串"hello world"为例&#xff0c;它的ASCII码为&#xff08;下面&#x1f447;是ASCII码对照表&#xff09;&#xff1a;将这些ASCII码转换为二进制&#xff08;对照上表&#xff09;&#xff1a;将上述二…

Pyside6入门教学——编写一个UI界面并显示

1、安装Pyside6 输入下列命令安装Pyside6。 pip install Pyside6 2、设计UI 打开Qt设计工具&#xff08;在安装Pyside6包的目录下&#xff09;。 【注】我这用的是anaconda虚拟环境&#xff0c;所以我的路径是D:\App\Anaconda3\envs\snake\Lib\site-packages\PySide6。设计…

前端(html+css+javascript)作业--展现家乡的网页

期末期间&#xff0c;老师布置了前端作业&#xff0c;现在放到这里&#xff0c;给各位同志参考。 桂平市是广西壮族自治区的一个美丽的城市&#xff0c;拥有丰富的历史文化和自然景观&#xff0c;属于贵港市管辖&#xff0c;那为什么是看起来是市级而不是县级&#xff0c;其实他…