做视频网站服务器配置免费做试卷的网站

news/2025/9/22 19:04:57/文章来源:
做视频网站服务器配置,免费做试卷的网站,微信公众号平台官网网址,学院网站建设用户需求分析报告C 文件操作篇 文章目录 C 文件操作篇1 简介1.1 继承关系1.2 流1.3 缓冲区输入输出流中的缓冲streambuf 2 文件操作步骤2.1 头文件2.2 创建流对象2.3 打开文件2.4 读取数据第一种#xff1a;**按元素直接读**第二种#xff1a;**使用getline按行读**第三种#xff1a;**使用*…C 文件操作篇 文章目录 C 文件操作篇1 简介1.1 继承关系1.2 流1.3 缓冲区输入输出流中的缓冲streambuf 2 文件操作步骤2.1 头文件2.2 创建流对象2.3 打开文件2.4 读取数据第一种**按元素直接读**第二种**使用getline按行读**第三种**使用*get*** 2.5 写入数据2.6 fstream类2.7 关闭文件 3 数据类型转换4 状态标志符的验证5 获得和设置流指针6 二进制文件读写6.1 写文件6.2 读文件 7 缓存和同步参考文档 1 简介 1.1 继承关系 这里文件操作主要有 ios-ostream-ofstream ios-istream-ifstream iostream-fstream (还继承了两个缓冲区一个用于输入一个用于输出) (此类用于文件I/O的同步即协调地移动输入缓冲区的输入指针和输出缓冲区的输出指针) (输入输出模式时使用fstream类)1.2 流 在程序设计中数据输入/输出I/O操作是必不可少的C语言的数据输入/输出操作是通过I/O流库来实现的。 C中把数据之间的传输操作称为流 **输出流:**数据从内存传送到某个载体或设备中 **输入流:**某个载体或设备传送到内存缓冲区变量中 标准I/O流内存与标准输入输出设备之间信息的传递文件I/O流内存与外部文件之间信息的传递字符串I/O流内存变量与表示字符串流的字符数组之间信息的传递 流类分类流类名称流 类 作 用流基类ios所有流类的父类保存流的状态并处理错误输入流类istream输入流基类将流缓冲区中的数据作格式化和非格式化之间的转换并输入 ifstreamifstream文件输入流类stream_withassigncin输入流类即操作符输入流istrstream串输入流类, 基于C类型字符串char*编写istringstream串输入流类, 基于std::string编写输出流类ostream输出流基类将流缓冲区中的数据作格式化和非格式化之间的转换。并输出ofstream文件输出流类ostream_withassignCout、cerr、clog的输出流类即操作符输出流ostrstream串输入流类, 基于C类型字符串char*编写ostringstream串输入流类, 基于std::string编写输入/输出流类iostream多目的输入/输出流类的基类fstream文件流输入/输出类strstream串流输入/输出类, 基于C类型字符串char*编写stringstream串流输入/输出类, 基于std::string编写 1.3 缓冲区 文件输出输入使用缓冲区在声明每个ofsream or ifsream对象时程序会为其自动分配该对象自己的缓冲区分为输入缓冲区和输出缓冲区 缓冲区就是一块存储空间它是为了匹配程序处理速度和外设处理速度比如程序一次处理1byte但是磁盘一次读取512bytes;又或者程序一次处理1byte可以1byte地从磁盘读取但是由于硬件读取一次数据复杂且操作慢因此使用缓冲区可以加快程序处理速度。 何时清空缓存 1.缓存区满时 2.使用文件close()方法时为了保证关闭文件时文件被更新。 输入输出流中的缓冲streambuf stl(标准库提供了缓冲区类streambuf提供给输入输出流使用每个标准的输入输出流对象均包含一个streambuf的指针。可以通过调用rdbuf()获取该指针从而直接访问底层streambuf对象streambuf最精彩的部分在于它支持,操作以及迭代器操作支持自定义。 2 文件操作步骤 2.1 头文件 #include fstream2.2 创建流对象 ofstream fout(xxx.txt); //文件写操作 内存写入存储设备 ifstream fin(xxx.txt); //文件读操作存储设备读区到内存中 fstream foi(xxx.txt); //读写操作对打开的文件可进行读写操作 2.3 打开文件 在从文件读取信息或者向文件写入信息之前必须先打开文件。ofstream 和 fstream 对象都可以用来打开文件进行写操作如果只需要打开文件进行读操作则使用 ifstream 对象。 void open(const char *filename, ios::openmode mode); // filename : 文件路径 openmode 打开方式模式标志描述ios::app追加模式。所有写入都追加到文件末尾。ios::ate文件打开后定位到文件末尾。ios::in打开文件用于读取。ios::out打开文件用于写入。ios::trunc如果该文件已经存在其内容将在打开文件之前被截断即把文件长度设为 0。 例如要以写入模式打开文件并希望截断文件以防文件已存在 ofstream fout; fout.open(file.dat, ios::out | ios::trunc );如果想要打开一个文件用于读写 ifstream afile; afile.open(file.dat, ios::out | ios::in );*** 可以不显式的调用open()函数 *** ofstream out(xxx.txt, ios::out); ifstream in(xxx.txt, ios::in); fstream foi(xxx.txt, ios::in|ios::out); /* 直接调用了其默认的打开方式因为在stream类的构造函数中调用了open()函数,并拥有同样的构造函数所以在这里可以直接使用流对象进行文件的操作 */成员函数is_open()可以对文件是否打开进行验证 2.4 读取数据 ① 为了保持健壮性读文件要有验证代码 ifstream fin(xxx.txt, ios::in);if(!fin.is_open()) {std::cerrcannot open the file } //或者 if(!fin){std::cerrcannot open the file; } ② 读取文件 第一种按元素直接读 string tmp;ifstream fin(writein.txt);if (!fin){cerr Fail!\n;}else{// 这种方法会从fin中逐个单词读取也就是遇到空格、换行时会停止while (fin tmp){cout tmp endl;}fin.close();}第二种使用getline按行读 输入流成员函数getline()用法 getline是C标准库函数它有两种形式一种是头文件 istream 中输入流成员函数一种在头文件 string 中普通函数 语法结构: istream getline (char* s, streamsize n ); istream getline (char* s, streamsize n, char delim );从istream中读取至多n个字符(包含结束标记符)保存在s对应的数组中。即使还没读够n个字符如果遇到delim 或 字数达到限制则读取终止delim都不会被保存进s对应的数组中。 读入了文件结束标志 EOF读到一个新行达到字符串的最大长度 –如果getline没有读入字符将返回false可用于判断文件是否结束 char buf[1021] { 0 };string tmp;ifstream fin(writein.txt);if (!fin){cerr Fail!\n;}else{// char *while (fin.getline(buf, sizeof(buf))){cout buf endl;}// string while (getline(fin, tmp)){cout tmp endl;}fin.close();}第三种使用get // 不推荐效率char c;ifstream fin(writein.txt);if (!fin){cerr Fail!\n;}else{while (c fin.get() ! EOF){cout c;}fin.close();}2.5 写入数据 string name;ofstream outfile(writein.txt, ios::app); // 以追加模式开启文件新数据会被加到文件尾端cout Writing to the file endl;cout Enter your name: ;cin name;outfile name endl;2.6 fstream类 #includefstream using namespace std; int main() {fstream file;file.open(1.txt,ios::out); //以只写模式打开文件char buf[] test;file.write(buf,sizeof(buf));//写入文件file.close(); //关闭文件file.open(1.txt, ios::app); //以追加模式打开文件char buf1[] test1;file.write(buf1, sizeof(buf));//写入文件末尾file.close(); //关闭文件file.open(1.txt,ios::in); //以只读方式打开文件char buf2[0xFF]; //存储读取的内容file.read(buf2,0xFF); //读文件file.close(); //关闭文件 }2.7 关闭文件 当文件读写操作完成之后我们必须将文件关闭以使文件重新变为可访问的。成员函数close()它负责将缓存中的数据排放出来并关闭文件。这个函数一旦被调用原先的流对象就可以被用来打开其它的文件了这个文件也就可以重新被其它的进程所访问了。为防止流对象被销毁时还联系着打开的文件析构函数将会自动调用关闭函数close。 3 数据类型转换 一般默认从文件中读取的是字符格式或者字符串格式的数据如果是数字要转化为float等格式怎么办呢 直接定义负责接受的变量数据类型按行分后再按单词分 从文件中提取“行”fin.getline(line,sizeof(line))从“行”中提取“单词”std::stringstream word(line); 4 状态标志符的验证 eof() ifstream 从类 ios 中继承过来的当到达文件末尾时返回true 。bad()如果在读写过程中出错返回 true 。例如当我们要对一个不是打开为写状态的文件进行写入时或者我们要写入的设备没有剩余空间的时候。fail()除了与bad() 同样的情况下会返回 true 以外加上格式错误时也返回true 例如当想要读入一个整数而获得了一个字母的时候。good()如果调用以上任何一个函数返回true 的话此函数返回 falseclear()重置以上成员函数所检查的状态标志 下面是一个eof()的使用示例 #include iostream.h #include fstream.h #include stdlib.h int main () { char buffer[256]; ifstream in(test.txt); if (! in.is_open()) { cout Error opening file; exit (1); } while (!in.eof() ) // 状态标志符的验证{ in.getline (buffer,100); cout buffer endl; } return 0; } //结果 在屏幕上输出 This is a line. This is another line 5 获得和设置流指针 所有输入/输出流对象都有至少一个流指针 ifstream 类似istream, 有一个被称为get pointer的指针指向下一个将被读取的元素。ofstream, 类似 ostream, 有一个指针put pointer指向写入下一个元素的位置。fstream, 类似 iostream, 同时继承了get 和 put 我们可以通过使用以下成员函数来读出或配置这些指向流中读写位置的流指针 tellg() 和 tellp() 这两个成员函数不用传入参数返回pos_type 类型的值(根据ANSI-C 标准) 就是一个整数代表当前get 流指针的位置 (用tellg) 或 put 流指针的位置(用tellp) seekg() 和seekp() 这对函数分别用来改变流指针get 和put的位置。两个函数都被重载为两种不同的原型 seekg ( pos_type position ); seekp ( pos_type position ); 使用这个原型流指针被改变为指向从文件开始计算的一个绝对位置。要求传入的参数类型与函数 tellg 和tellp 的返回值类型相同。 seekg ( off_type offset, seekdir direction ); seekp ( off_type offset, seekdir direction ); 使用这个原型可以指定由参数direction决定的一个具体的指针开始计算的一个位移(offset)。它可以是 ios::beg从流开始位置计算的位移ios::cur从流指针当前位置开始计算的位移ios::end从流末尾处开始计算的位移 流指针 get 和 put 的值对文本文件(text file)和二进制文件(binary file)的计算方法都是不同的因为文本模式的文件中某些特殊字符可能被修改。由于这个原因建议对以文本文件模式打开的文件总是使用seekg 和 seekp的第一种原型而且不要对tellg 或 tellp 的返回值进行修改。对二进制文件你可以任意使用这些函数应该不会有任何意外的行为产生。 以下例子使用这些函数来获得一个二进制文件的大小 // obtaining file size #include iostream.h #include fstream.h const char * filename test.txt; int main () { long l,m; ifstream in(filename, ios::in|ios::binary); l in.tellg(); in.seekg (0, ios::end); m in.tellg(); in.close(); cout size of filename; cout is (m-l) bytes.\n; return 0; } //结果: size of example.txt is 40 bytes. 6 二进制文件读写 以二进制形式读写文件有哪些好处 举个例子现在要做一个学籍管理程序其中一个重要的工作就是记录学生的学号、姓名、年龄等信息。这意味着我们需要用一个类来表示学生如下所示 class CStudent {char szName[20]; //假设学生姓名不超过19个字符以 \0 结尾char szId[l0]; //假设学号为9位以 \0 结尾int age; //年龄 };如果以文本形式存储学生的信息则最终的文件中存储的学生信息可能是这个样子 Micheal Jackson 110923412 17 Tom Hanks 110923413 18 ......要知道这种存储学生信息的方式不但浪费空间而且后期不利于查找指定学生的信息查找效率低下因为每个学生的信息所占用的字节数不同。 这种情况下以二进制形式将学生信息存储到文件中是非常不错的选择因为以此形式存储学生信息可以直接把 CStudent 对象写入文件中这意味着每个学生的信息都只占用 sizeof(CStudent) 个字节。 二进制方式对文件进行读写操作时打开方式要指定为ios::binary如果存储类只占用 sizeof(class) 个字节。以二进制形式读写文件 和 将不再适用需要使用 C 标准库专门提供的 read() 和 write() 成员方法。其中二进制文件后缀.bat 6.1 写文件 流对象调用成员函数 write函数原型ostream write(const char * buffer, int len); 字符指针buffer指向要写入文件的二进制数据的起始位置len 是读写的字节数返回一个调用该方法的对象的引用 下面的程序演示了如何将学生信息以二进制形式写入文件 #include iostream #include fstream using namespace std;struct CStudent {char szName[20];int age; }; int main() {CStudent s;ofstream fout(students.dat, ios::out | ios::binary);while (cin s.szName s.age) // ^z 结束键入{fout.write((char*)s, sizeof(s));}fout.close();return 0; }6.2 读文件 流对象调用成员函数 read函数原型istream read(char * buffer, int len); 字符指针buffer指向读取字节的起始位置len 是读写的字节数返回一个调用该方法的对象的引用 下面程序演示了如何使用 read() 方法将二进制文件数据读取出来 #include iostream #include fstream using namespace std;struct CStudent {char szName[20];int age; }; int main() {CStudent s;ifstream fin(students.dat, ios::in | ios::binary); //二进制读方式打开if (!fin){cout error endl;return;}while (fin.read((char*)s,sizeof(s)))//一直读到文件结束{cout s.szName s.age endl;}fin.close();return 0; }7 缓存和同步 当我们对文件流进行操作的时候它们与一个streambuf 类型的缓存(buffer)联系在一起。这个缓存buffer实际是一块内存空间作为流(stream)和物理文件的媒介。例如对于一个输出流 每次成员函数put (写一个单个字符)被调用这个字符不是直接被写入该输出流所对应的物理文件中的而是首先被插入到该流的缓存buffer中。 当缓存被排放出来(flush)时它里面的所有数据或者被写入物理媒质中如果是一个输出流的话或者简单的被抹掉(如果是一个输入流的话)。这个过程称为同步(synchronization)它会在以下任一情况下发生 当文件被关闭时: 在文件被关闭之前所有还没有被完全写出或读取的缓存都将被同步。**当缓存buffer 满时:**缓存Buffers 有一定的空间限制。当缓存满时它会被自动同步。**控制符明确指明:**当遇到流中某些特定的控制符时同步会发生。这些控制符包括flush 和endl。明确调用函数sync(): 调用成员函数sync() (无参数)可以引发立即同步。这个函数返回一个int 值等于-1 表示流没有联系的缓存或操作失败。 参考文档 成员函数详解C输入文件流ifstream用法详解 流的一些总结c输入输出流 一文读懂缓冲区 c输入文件流ifstream用法详解 c输出文件流ofstream用法详解

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

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

相关文章

静态网站建设流程怎么写用wordpress设计html5

一、内网访问 1.打开ctfhub给的环境地址 2.观察题目 发现让我们访问127.0.0.1下的flag.php 在地址栏后面有一个url参数 ?urlhttp://127.0.0.1/flag.php 提交即可 二、伪协议读取文件 1.打开ctfhub给的环境 2.观察题目 发现让我们读取flag.php文件 读取文件用到的协议是…

网站建设费用 无形资产广州建设网站技术

目录 1. Res2Net介绍 1.1 Res2Net的背景和动机 1.2 Res2Net的基本概念 2. YOLOV5添加Res2Net模块 Res2Net(Residual Resolution Network)是一种用于图像处理和计算机视觉任务的深度卷积神经网络架构。它旨在解决传统的ResNet(Residual Ne…

万远翔网站建设西安 网站空间

经中国证监会批准,深圳证券交易所于2019年12月23日上市嘉实沪深300ETF期权合约品种。该产品是以沪深300为标的物的嘉实沪深300ETF交易型指数基金为标的衍生的标准化合约,下文介绍沪深300期权一个点多少钱?本文来自:期权酱 一、沪深300期权涨…

9/22

今天上了一天课,好累

LaTeX入门:10分钟掌握核心用法 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

对于一门古老东欧玄学的初步研究的简要报告

主要为咒术应用的简单介绍众所周知,概率是一个看起来简单实际上很有意思的东西。 jzyz4467绑鞋带 发现难以下手。假如说已经系了\(i\)次,再随便挑一个准备让他与别人系,那么还剩下\(2(n-i)-1\)个头,但是因为他不能…

做的很好的网站视频网站后台模板

正则数字字母下划线至少两种Problem statement: 问题陈述: To find minimum of two 8bit numberusing 8085 microprocessor. 使用8085微处理器查找最少两个8位数字。 Algorithm: 算法: Load the accumulator with the first data. 向累加器加载第一个…

宁波建设网站多少钱为什么不要做外包员工

调试和诊断 运行时单击 只需在调试运行到此行时单击代码行旁边的图标。 无需再设置临时断点,也不必再执行多个步骤来执行代码和在所需行停止。 现在,调试器下停在中断状态时,“运行时单击”图标会在鼠标悬停位置的代码行旁边巧妙显示。 将鼠…

更换dns能上国外网站吗地产主视觉设计网站

文章目录 初识观察者模式优缺点示例代码(使用 Java 实现)有哪些知名的框架采用了观察者模式常见面试题 初识观察者模式 观察者模式(Observer Pattern)是一种软件设计模式,属于行为型模式。它定义了一种一对多的依赖关…

常德网站建设套餐报价2023年简短新闻三十条

恰巧大数据实验安装 Anaconda & Pycharm,借此机会写篇博客分享一下 Anaconda 下载 Anaconda 清华镜像网站看一看 下载之后,放入 linux文件夹中 安装 Anaconda bash 下载的文件名 之后,按照提示进行输入信息(大多数都是 回车) 一定…

个人作品展示网站模板什么是网络营销行为分析

文章目录 1、平均值2、首次作为参考基准3、绝对差值4、方差、均方差、CV值4.1 方差(variance)4.2 均方差、标准差(Standard Deviation)4.3 CV值 1、平均值 Excel 公式:AVERAGE(C4:C20) 2、首次作为参考基准 Excel 操作…

可视化导航网站源码响应式网站404页面怎么做

在这个充满创新与想象力的时代,人工智能不仅仅是科技的前沿,更是艺术的新领域。今天,我要与大家分享的,不仅仅是一幅幅由AI绘制的奇妙画卷,更是一场关于未来艺术的探索之旅。 你是否曾想象过,未来的画家不再…

卢氏县住房和城乡规划建设局网站苏州 手机网站

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。 在这篇文章中,您将学习微服务架构以及如何使用Spring Boot来实现它。 在使…

万家灯火营销型网站建设网站的会计分录

在 Oracle 数据库中,如果你想要比较 DATE 类型的时间部分,你需要意识到 DATE 类型实际上包含日期和时间信息,精确到秒。但是,由于 DATE 类型没有单独的时间组件,你通常需要一些额外的逻辑来提取或比较时间部分。 以下…

用腾讯云做淘宝客购物网站视频软件界面设计app

4.6高级处理-缺失值处理 点击标题即可获取文章源代码和笔记 数据集:https://download.csdn.net/download/weixin_44827418/12548095 Pandas高级处理缺失值处理数据离散化合并交叉表与透视表分组与聚合综合案例4.6 高级处理-缺失值处理1)如何进行缺失值处…

百度营销-网站分析培训建筑设计网站

教程介绍 学习信息收集,针对域名信息,解析信息,网站信息,服务器信息等;学习端口扫描,针对端口进行服务探针,理解服务及端口对应关系;学习WEB扫描,主要针对敏感文件,安全漏洞,子域名信息等;学习信息收集方法…

Codeforces 2127 D(图论,组合数学,DFS,分类讨论)

Codeforces 2127 D(图论,组合数学,DFS,分类讨论)Codeforces 2127 D D. Root was Built by Love, Broken by Destiny 题意: n栋房子,其中有m做桥分别连接两栋房子,然后把这些房子分别排列在南北两岸顺序不限,排列…

Java学习笔记:从三个实验看编程思维的锤炼

在石家庄铁道大学《Java语言程序设计》课程的学习过程中,我通过三个有趣的动手实验,不仅掌握了具体的语法知识,更深刻体会到编程思维的重要性。这些实验看似简单,却蕴含着程序设计中的深层原理。 枚举类型:从混沌…

完整教程:App 上架平台全解析,iOS 应用发布流程、苹果 App Store 审核步骤

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

视频网站用什么做的好处公司介绍网站模板

部署描述: 1.jenkins 通过maven编译成jar 项目包 2.shell 脚本从jenkins机器发布到:目标主机 注释:次脚本没有写jar包的备份,有时间加上 脚本内容: #!/bin/bash#线上服务器列表 HOST_LIST${:2}#项目名 REMOTE_PROJECT$…