fstream读写文件

article/2025/9/13 11:09:46

1.fstream是什么?

fstream是C++标准库中面向对象库的一个,用于操作流式文件。
fstream本质上是一个class,提供file操作的各种方法。

2.关系图

在这里插入图片描述
basic_fstream是一个类模板,暂且不用深入理解它。我们关心的事,它前面继承的那一堆东西。

fstream是basic_fstream<char>的一个模板类,也就说明,fstream也继承了一堆东西。

我们再关心一下从 ios_base基类,重点继承了什么?文件流的打开模式。
在这里插入图片描述

3.实验

3.1 打开/创建文件

void open( const char *filename, ios_base::openmode mode =ios_base::in|ios_base::out );

#include <iostream>
#include <fstream>
using namespace std;
int main()
{fstream fs;cout << "hello" << endl;fs.open("d://zhou");    if (fs.is_open()){cout << "open success" << endl;}else{cout << "open failed" << endl;}system("pause");return 0;
}

输出结果
在这里插入图片描述
打开失败了。
说明不能自动创建不存在的文件。

修改fs.open("d://zhou");fs.open("d://zhou", ios_base::in); ,即只读的方式打开。
运行后,文件依旧不能被创建。

修改fs.open("d://zhou");fs.open("d://zhou", ios_base::out); ,即只写的方式打开。
运行后,文件在D盘被创建了。
在这里插入图片描述在这里插入图片描述
所以,想要打开一个不存的文件,并且创建它,必须包含 ios_base::out模式。

3.2 写文件 write()

basic_ostream& write( const char_type* s, std::streamsize count );
它是继承于ostream类

#include <iostream>
#include <fstream>
using namespace std;
int main()
{char str[] = "hello world";fstream fs;cout << "hello" << endl;fs.open("d://zhou.txt", ios_base::out); if (fs.is_open()){cout << "open success" << endl;}else{cout << "open failed" << endl;}fs.write(str, sizeof(str) - 1);  //写入内容//fs << str << endl;system("pause");return 0;
}

实验结果
在这里插入图片描述
写入有两种方式,一种是使用 fs.write,另一种是使用 << 流操作符号。流操作符号本质也是调用了write方法。

3.3 读文件 read()

basic_istream& read( char_type* s, std::streamsize count );
它是继承于istream类。

#include <iostream>
#include <fstream>
using namespace std;
int main()
{char str[] = "hello world";char rstr[128] = {0};fstream fs;cout << "hello" << endl;fs.open("d://zhou.txt", ios_base::out | ios_base::in); if (fs.is_open()){cout << "open success" << endl;}else{cout << "open failed" << endl;}fs.write(str, sizeof(str) - 1);  //写入fs.sync();                       //写入硬盘fs.seekg(ios_base::beg);         //文件指针的位置回到开头fs.read(rstr, sizeof(rstr));     //读数据cout << rstr << endl;fs.close();system("pause");return 0;
}

实验结果
在这里插入图片描述
写入"hello word" 再读出来。
咦?怎么读一个数据不是只调用read就行吗?怎么多了好几个?
因为…
fs.write()是将内容写入缓冲区(内存)。fs.sync() 是为了将缓冲区的内容刷新写入硬盘。而read方法是只能读取硬盘上的内容,读不了缓冲区。
fs.seekg()则是将文件的指针回到开头。当为了写入之后,文件指针指向了末尾了。调用read时候,也就会从末尾读,啥也读不出来。

3.4 读文件 getline()

读文件的操作,getlineread更加常用。
getline一读就一整行了。
getline的内容实现也是依靠read方法(c语言是这样,c++可能也是这样)。

    while (!fs.eof()) {fs.getline(rstr, sizeof(rstr));     //读数据cout << rstr << endl;}

fs.eof()是为了判断是否到达末尾,若抵达末尾,返回true,否则false。

实验结果
在这里插入图片描述

4.最后

fstream的方法何其之多,掌握比较常用的即可。许多操作跟C语言类似。
学习C++最重要的技能之一是学会查找文档。
中文手册:https://www.apiref.com/cpp-zh/cpp.html
英文手册:http://www.cplusplus.com/reference/

在这里插入图片描述


http://chatgpt.dhexx.cn/article/MyYWsglR.shtml

相关文章

【C++入门】文件流(fstream)介绍和使用

1、打开函数&#xff1a;open mode含义ios::in以读取方式打开文件ios::out以写入方式打开文件ios::binary以二进制方式存取ios::ate存取指针在文件末尾ios::app写入时采用追加方式ios::trunc写入时抹去旧数据 (1)在C11标准时&#xff0c;open函数的文件路径可以传char指针也可以…

谷歌浏览器代理服务器出现问题怎么办?(最快的解决办法)

谷歌浏览器代理服务器出现问题怎么办? 两个解决办法&#xff08;其他浏览器也可用&#xff09;&#xff1a; &#xff08;1&#xff09;方法一&#xff1a;【重置】浏览器。&#xff08;最方便快捷的方式&#xff09; ①进入“设置”——&#xff09;选择“重置并清理”——…

上不了网,代理服务器出现问题

上不了网&#xff0c;代理服务器出现问题 1.问题截图 2.解决的方法

代理服务器可能有问题,或地址不正确的解决方案

可能是设置了代理服务器的原因。 1.先打开代理服务器设置 2.关闭代理服务器。

win10 代理服务器出现问题 或者地址有误

本人win10系统&#xff0c;今天晚上使用浏览器&#xff0c;打开页面的时候突然出现了&#xff1a; 代理服务器出现问题 或者地址有误。 具体诊断&#xff0c;错误截图也就不放了。 解决办法&#xff1a;原本那个使用代理服务器不知道怎么的打开了&#xff0c;关掉之后再通过…

代理服务器可能有问题,或地址不正确(已解决)

解决代理服务器可能有问题&#xff0c;或地址不正确 1. 问题描述2. 解决方法 1. 问题描述 如果遇到电脑连上wifi&#xff0c;其他应用可以上网(例如可以登录QQ)&#xff0c;但是浏览器不能浏览网页&#xff0c;出现代理服务器可能有问题&#xff0c;或地址不正确 这个错误&…

Mac 使用Charles后,退出Charles后,不能浏览网页,提示:未连接到互联网代理服务器出现问题,或者地址有误。

问题&#xff1a; Mac 使用Charles后&#xff0c;退出Charles后&#xff0c;不能浏览网页 提示&#xff1a;未连接到互联网代理服务器出现问题&#xff0c;或者地址有误。 原因&#xff1a; 出现该问题的原因&#xff1a;使用Charles时&#xff0c;会自动打开网络代理。正常…

代理服务器有问题怎么办?

问题&#xff1a;代理服务器可能有问题&#xff0c;或vkeeper链接无网络&#xff08;vkeeper两步都要做&#xff09; 解决方法&#xff1a; 第一步&#xff1a;在下方搜索栏搜索更改代理设置并点击&#xff1b;或其他方式进入代理服务器设置 进入后&#xff0c;观察 手动设置代…

chrome 未连接到互联网 代理服务器出现问题,或者地址有误

一天两头的连不上网&#xff0c;原因是莫名其妙的被加上了代理&#xff0c;解决方案如下&#xff1a; 请检查您的代理服务器设置或与网络管理员联系&#xff0c;以确保代理服务器正常运行。如果您认为自己不需要使用代理服务器&#xff0c;请执行以下操作&#xff1a; 依次转到…

未连接到互联网 代理服务器出现问题,或者地址有误。

请检查您的代理服务器设置或与网络管理员联系&#xff0c;以确保代理服务器正常运行。如果您认为自己不需要使用代理服务器&#xff0c;请执行以下操作&#xff1a; 依次转到 Chrome 菜单 >“设置”>“显示高级设置…”>“更改代理服务器设置…”>“LAN 设置”&…

网页未连接到互联网,代理服务器出现问题

网页未连接到互联网&#xff0c;代理服务器出现问题 如果网络正常连接但是网页却打不开&#xff0c;&#xff08;qq微信都可以登录&#xff09;网页出现以下页面&#xff1a; 解决办法&#xff1a; windows搜索代理服务器&#xff0c;或者打开设置-网络和Internet-代理。关闭使…

浏览器代理服务器出现问题

使员工charles时&#xff0c;会出现&#xff0c;可以启动charles&#xff0c;解决问题&#xff0c;或者关闭代理 一直使用正常&#xff0c;浏览器突然不能访问&#xff0c;显示如下 搜狗浏览器&#xff1a; 到搜狗浏览器&#xff0c;设置--高级 不使用代理 解决问题 chrome浏览…

问题:未连接到互联网 代理服务器出现问题,或者地址有误。

出现的问题如下图&#xff1a; 解决方案如下&#xff1a; (此问题有俩种解决方法&#xff0c;我个人推荐使用第二种方案&#xff0c;能够最快最好最实用地去解决此问题;) 法一&#xff1a;燃眉之急的方法(但不能完全解决问题)&#xff1a; 步骤1&#xff1a;按 WinR 键&…

Chrome代理服务器出现问题,或者地址有误(win10)

chrome浏览器输入任何网址都显示如下界面 这种情况&#xff0c;原因有很多&#xff0c;总之网络连接有问题&#xff1a; 解决&#xff1a; 1、查看网络连接&#xff0c;确认只有chrome不好使&#xff0c;其他软件联网正常 2、是否使用了“梯子”之类的东西&#xff0c;如果有&…

浏览器提示代理服务器出现问题,或则地址有误

如下图&#xff1a; 解决&#xff1a; 代理问题&#xff0c;电脑开代理了&#xff0c;关掉即可。具体步骤&#xff1a;

win10连着网但网页打不开,代理服务器出现问题,或地址有误

win10连着网但电脑网页打不开 代理服务器出现问题&#xff0c;或地址有误&#xff0c;但QQ等软件却能正常运行。 打开设置&#xff1a;查找internet选项&#xff1a; 打开后点击“连结”&#xff0c;然后点下方的“局域网设置”。 之后把代理服务器里的"为LAN使用地理服务…

[Win10] 代理服务器出现问题或地址有误

本文介绍了访问浏览器时显示代理服务器出现问题或地址有误的解决方案 1 问题描述 打开 Chrome 浏览器访问网页时&#xff0c;提示代理服务器出现问题或地址有误&#xff0c;无法连接至互联网 2 问题排查 打开cmd&#xff0c;输入 ping 127.0.0.1 命令检查主机的网卡是否正常…

windows无法上网:代理服务器出现问题或地址有误

1.问题描述 微信、QQ可以登录正常使用&#xff0c;也可以ping通百度&#xff0c;但是浏览器无法上网&#xff0c;如下图所示。 2.解决办法 控制面板→网络和Internet→ Internet选项→连接→局域网设置&#xff1a;取消代理服务器勾选&#xff0c;选择自动检测设置&#xff0c…

解决代理服务器出现问题,无法连接校园网

和往常一样&#xff0c;打开电脑&#xff0c;却遇到了这样的问题 不要慌&#xff0c;这就说解决的办法 windowR 向搜索框输入控制面板&#xff0c;不要直接打开控制面板&#xff0c;点击右边的internet选项 然后进入接下来的页面&#xff0c;点击连接到局域网设置&#xff0…

电脑代理服务器出现问题的解决办法

问题如下 解决办法 第一个 进入电脑设置->网络与Internet&#xff0c;然后点击下面的代理 往下滑&#xff0c;找到手动设置代理&#xff0c;查看是否打开&#xff0c;若打开&#xff0c;则关闭。 第二个 第一个没用的话&#xff0c;就在电脑打开IE浏览器&#xff0c;可…