c++中fstream是什么意思_汽车配置参数图文详解

c++中fstream是什么意思_汽车配置参数图文详解在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,一,c++文件流的结构:‍1,几个文件流类名称:fstream,ifstream,ofstream,iofstream2,之间的关系:ifstream(inputfilestream)和ofstream(outpufilestream),ifstream默认以输入方式打开文件,而ofstream默认以输出方式打…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,

一,c++ 文件流的结构 :

‍1,几个文件流类名称:fstream,ifstream,ofstream,iofstream

2,之间的关系:

ifstream(input file stream)和ofstream(outpu file stream),ifstream默认以输入方式打开文件,而ofstream默认以输出方式打开文件。

ifstream file2(“c://pdos.def”);//以输入方式打开文件,输入方式:读文档

ofstream file3(“c://x.123”);//以输出方式打开文件 ,输出方式:写文档,向文档输出内容

iostream是对屏幕上输入输出

————————————–

二,构造函数:(ofstream与 ifstream的构造函数与fstream的相同)

1,fstream fout(“parts.txt”);

2,fstream logfile(“database.dat”, ios::in | ios::out);

定义了下列打开模式和文件属性:

ios::app // 从后面添加

ios::ate // 打开并找到文件尾

ios::binary // 二进制模式 I/O (与文本模式相对)

ios::in // 只读打开

ios::out // 写打开

ios::trunc // 将文件截为 0 长度

你可以用位域操作符 OR 组合这些标志:

ofstream logfile(“login.dat”, ios::binary | ios::app); //向现有文件中添加二进制数据

std::fstream test(“hahahah”,ios::in | ios::out | ios::trunc); //读、写、将文件设定为空

‍3,std::ifstream readfile();

————————————–

二,打开文件的几种方式:

1,使用上面的构造函数:

std::ofstream logfile(“log.dat”);

std::ifstream logfile(“log.dat”);

std::fstream logfile(“log.dat”);

std::fstream test(“log.dat”,ios::in | ios::out | ios::trunc);

2,使用open函数:

std::ifstream logfile();

logfile.open(“log.dat”);

3,打开文件的属性设置:

0:普通文件,打开访问

1:只读文件

2:隐含文件

4:系统文件

可以用“或”或者“+”把以上属性连接起来 ,如3或1|2就是以只读和隐含属性打开文件。

例如:以二进制输入方式打开文件c:/config.sys

fstream file1;

file1.open(“c://config.sys”,ios::binary|ios::in,0);

如果open函数只有文件名一个参数,则是以读/写普通文件打开,即:

file1.open(“c://config.sys”);<=>file1.open(“c://config.sys”,ios::in|ios::out,0);

例程:

std::fstream file;

try

{

file.open(“C++.txt”);

}

catch(std::exception &e)

{

cout<

}

————————————–

三,读写文件:(读文件:限ifstream,fstream;写文件:限ofstream,fstream)

(1)文本的读写:

1,使用插入器(<

例程:file2<

这种方式还有一种简单的格式化能力,比如可以指定输出为16进制等等,具体的格式有以下一些

操纵符 功能 输入/输出

dec 格式化为十进制数值数据 输入和输出

endl 输出一个换行符并刷新此流 输出

ends 输出一个空字符 输出

hex 格式化为十六进制数值数据 输入和输出

oct 格式化为八进制数值数据 输入和输出

setpxecision(int p) 设置浮点数的精度位数 输出

比如要把123当作十六进制输出:file1<

例程:

265 char * name = “danny”;

266 std::ofstream logfile(“log.dat”);

267 logfile<

2,使用析取器(>>)读文件

从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。

例程:

std::ifstream readfile(“log.dat”);

string name_01;

readfile>>name_01;

cout<

//结果输出:danny

——————————————-

(2)文本或二进制数据的读写:

1,使用put()写数据

put()函数向流写入一个字符,其原型是ofstream &put(char ch),使用也比较简单,如file1.put(‘c’);就是向流写一个字符’c’。

2,使用get()读数据

get()函数比较灵活,有3种常用的重载形式:

一种就是和put()对应的形式:ifstream &get(char &ch);功能是从流中读取一个字符,结果保存在引用ch中,如果到文件尾,返回空字符。如file2.get(x);表示从文件中读取一个字符,并把读取的字符保存在x中。

另一种重载形式的原型是: int get();这种形式是从流中返回一个字符,如果到达文件尾,返回EOF,如x=file2.get();和上例功能是一样的。

还有一种形式的原型是:ifstream &get(char *buf,int num,char delim=’/n’);这种形式把字符读入由 buf 指向的数组,直到读入了 num 个字符或遇到了由 delim 指定的字符,如果没使用 delim 这个参数,将使用缺省值换行符’/n’。例如:

file2.get(str1,127,’A’);//从文件中读取字符到字符串str1,当遇到字符’A’或读取了127个字符时终止。

例程:

std::ifstream readfile(“log.dat”);

char ch = NULL;

while(readfile.get(ch))

{

cout<

}

结果:

char is :

char is :d

char is :a

char is :n

char is :n

char is :y

char is :

——————————————-结果输出结束

3,使用getline(fstream &fs,string & str)方法,读取文件到str

‍例程:

std::ifstream readfile(“log.dat”);

string name_02;

while(getline(readfile,name_02))

{

cout<

}

结果为:

value is :

value is :danny

(3)读写数据块:

要读写二进制数据块,使用成员函数read()和write()成员函数,它们原型如下:

read(unsigned char *buf,int num);

write(const unsigned char *buf,int num);

read()从文件中读取 num 个字符到 buf 指向的缓存中,如果在还未读入 num 个字符时就到了文件尾,可以用成员函数 int gcount();来取得实际读取的字符数;而 write() 从buf 指向的缓存写 num 个字符到文件中,值得注意的是缓存的类型是 unsigned char *,有时可能需要类型转换。

例:

unsigned char str1[]=”I Love You”;

int n[5];

ifstream in(“xxx.xxx”);

ofstream out(“yyy.yyy”);

out.write(str1,strlen(str1));//把字符串str1全部写到yyy.yyy中

in.read((unsigned char*)n,sizeof(n));//从xxx.xxx中读取指定个整数,注意类型转换

in.close();out.close();

(4)检测EOF

成员函数eof()用来检测是否到达文件尾,如果到达文件尾返回非0值,否则返回0。原型是int eof();

例:  if(in.eof())ShowMessage(“已经到达文件尾!”);

(5)文件定位

和C的文件操作方式不同的是,C++ I/O系统管理两个与一个文件相联系的指针。一个是读指针,它说明输入操作在文件中的位置;另一个是写指针,它下次写操作的位置。每次执行输入或输出时,相应的指针自动变化。所以,C++的文件定位分为读位置和写位置的定位,对应的成员函数是 seekg()和 seekp(),seekg()是设置读位置,seekp是设置写位置。它们最通用的形式如下:

fstream &seekp(seek_dir origin);

‍              fstream &seekp(streamoff offset,seek_dir origin);

‍               ifstream &seekg(seek_dir origin);

ifstream &seekg(streamoff offset,seek_dir origin);

ofstream &seekp(seek_dir origin);

ofstream &seekp(streamoff offset,seek_dir origin);

streamoff定义于 iostream.h 中,定义有偏移量 offset 所能取得的最大值,seek_dir 表示移动的基准位置,是一个有以下值的枚举:

ios::beg:  文件开头

ios::cur:  文件当前位置

ios::end:  文件结尾

这两个函数一般用于二进制文件,因为文本文件会因为系统对字符的解释而可能与预想的值不同。

例:

file1.seekg(1234,ios::cur);//把文件的读指针从当前位置向后移1234个字节

file2.seekp(1234,ios::beg);//把文件的写指针从文件开头向后移1234个字节

在BCB中也提供了文件操作的函数,这些函数的功能和前面所介绍的大致相同,但这类函数和BCB关系紧密,能使用BCB中的AnsiString等数据类型,在BCB中用这种方式的文件操作是最方便的,下面我就把这种文件操作详细介绍。

http://blog.csdn.net/luhifeng/article/details/6433589

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191799.html原文链接:https://javaforall.net

(0)
上一篇 2026年1月25日 上午9:15
下一篇 2026年1月25日 上午9:43


相关推荐

  • DSP之CCS软件使用一「建议收藏」

    1、创建新的工程文件:选择菜单“Project”的“New…”项。2、在工程文件中添加程序文件:新增文件分别为*.c,.cmd,evmdm6437bsl.lib,.h文件。方法:(1)找到C盘下C:\CCStudio_v3.3\boards\ICETEK-DM6437-B_V2\test\Lab0101_UseCCS\UseCCS\UseCCS.C文件。(2)C:\CCStudio…

    2022年4月7日
    52
  • Graylog 安装使用

    Graylog 安装使用Graylog 安装使用简介 Graylog 是一个简单易用 功能较全面的日志管理工具 相比 ELK 组合 优点 部署维护简单查询语法简单易懂 对比 ES 的语法 内置简单的告警可以将搜索结果导出为 json 提供简单的聚合统计功能 UI 比较友好当然 拓展性上比 ELK 差很多 整套依赖 Graylog 提供 graylog 对外接口 CPU 密集 Elasticsearc 日志文

    2026年3月17日
    2
  • esxi 嵌入式vCenter 6.5 不用设置DNS安装部署说明

    esxi 嵌入式vCenter 6.5 不用设置DNS安装部署说明

    2021年6月6日
    155
  • 2020年前端面试题及答案_结构化面试题库及答案

    2020年前端面试题及答案_结构化面试题库及答案1、javascript基本数据类型?string、number、null、underfined、booleanobject是所有对象的父对象。2、浅谈javascript中变量和函数声明的提升?变量和函数声明的提升会被提升到最顶部去执行;函数的提升高于变量的提升;如果在函数内部用var声明了与外部相同的变量,则不向下寻找;匿名函数不会被提升;不同块中互不影响。3、什么是闭包?闭包有什么特性?闭包就是能够读取其他函数内部变量的函数。闭包的特性:函数内部可以嵌套函数;内部函数可以直接

    2022年8月27日
    9
  • 那四年,我们一起逝去的青春

    今天是2011年10月1日,是我出生后的第21个国庆节,也是大学生涯里最后一个国庆节,这篇日志可能有点长,闲着蛋疼的童鞋可以泡杯咖啡,一边喝一边看,就当看笑话好了。日志发出来估计已经是几个月后的事了,这也是记录了大学里的点点滴滴。前几天大一新生的军训闭幕式也落下了帷幕,上周五毕业设计的初稿已经发下来了,室友在实习的公司上班马上就要发工资了,考研的童鞋已经进入了积极备战的状态,据说毕

    2022年4月8日
    40
  • pyinstaller 多个.py打包exe_python怎么生成py文件

    pyinstaller 多个.py打包exe_python怎么生成py文件一、python安装pyinstaller方法使用python编写脚本,需要发给别人使用的时候,总会想到如何打包成exe文件,发给对方。这样的话,对方可以直接使用运行,无需安装python。所以看网上的教程,大多使用pyinstaller。以下介绍下安装方法:1、在cmd控制台下,先升级pip版本,先执行命:pipinstall-Upip,若执行失败,控制台会提示新密令,按照提示…

    2022年4月20日
    215

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号