首页 > 编程语言 >C++文件类(文件流类)及用法详解

C++文件类(文件流类)及用法详解

时间:2024-03-26 20:12:30浏览次数:26  
标签:文件 ch 字符 流中 C++ 流类 打开 open

open() fstream
ifstream
ofstream
打开指定文件,使其与文件流对象相关联。
is_open() 检查指定文件是否已打开。
close() 关闭文件,切断和文件流对象的关联。
swap() 交换 2 个文件流对象。
operator>> fstream
ifstream
重载 >> 运算符,用于从指定文件中读取数据。
gcount() 返回上次从文件流提取出的字符个数。该函数常和 get()、getline()、ignore()、peek()、read()、readsome()、putback() 和 unget() 联用。
get() 从文件流中读取一个字符,同时该字符会从输入流中消失。
getline(str,n,ch) 从文件流中接收 n-1 个字符给 str 变量,当遇到指定 ch 字符时会停止读取,默认情况下 ch 为 '\0'。
ignore(n,ch) 从文件流中逐个提取字符,但提取出的字符被忽略,不被使用,直至提取出 n 个字符,或者当前读取的字符为 ch。
peek() 返回文件流中的第一个字符,但并不是提取该字符。
putback(c) 将字符 c 置入文件流(缓冲区)。
operator<< fstream
ofstream
重载 << 运算符,用于向文件中写入指定数据。
put() 向指定文件流中写入单个字符。
write() 向指定文件中写入字符串。
tellp() 用于获取当前文件输出流指针的位置。
seekp() 设置输出文件输出流指针的位置。
flush() 刷新文件输出流缓冲区。
good() fstream
ofstream
ifstream
操作成功,没有发生任何错误。
eof() 到达输入末尾或文件尾。

 

以 fstream 类举例,简单演示如何使用表中的一些成员方法操作文件:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
    const char *url ="http://c.biancheng.net/cplus/";
    //创建一个 fstream 类对象
    fstream fs;
    //将 test.txt 文件和 fs 文件流关联
    fs.open("test.txt", ios::out);
    //向test.txt文件中写入 url 字符串
    fs.write(url, 10);  //后面的数字代表输入到文件的字符个数
    fs.close();
    return 0;
}

执行程序,该程序同目录下会生成一个 test.txt 文件,该文件的内容为:

http://c.b

无论是读取文件中的数据,还是向文件中写入数据,最先要做的就是调用 open() 成员方法打开文件。同时在操作文件结束后,还必须要调用 close() 成员方法关闭文件。

 

在对文件进行读写操作之前,先要打开文件。打开文件有以下两个目的:

  • 通过指定文件名,建立起文件和文件流对象的关联,以后要对文件进行操作时,就可以通过与之关联的流对象来进行。
  • 指明文件的使用方式。使用方式有只读、只写、既读又写、在文件末尾添加数据、以文本方式使用、以二进制方式使用等多种。


打开文件可以通过以下两种方式进行:

  • 调用流对象的 open 成员函数打开文件。
  • 定义文件流对象时,通过构造函数打开文件。

使用 open 函数打开文件

先看第一种文件打开方式。以 ifstream 类为例,该类有一个 open 成员函数,其他两个文件流类也有同样的 open 成员函数:

void open(const char* szFileName, int mode)

第一个参数是指向文件名的指针,第二个参数是文件的打开模式标记。

文件的打开模式标记代表了文件的使用方式,这些标记可以单独使用,也可以组合使用。表 1 列出了各种模式标记单独使用时的作用,以及常见的两种模式标记组合的作用。

 

标签:文件,ch,字符,流中,C++,流类,打开,open
From: https://www.cnblogs.com/uacs2024/p/18097453

相关文章

  • .NET C#程序启动闪退,在安装或者程序文件下能正常运行,但通过路径却无法运行
    .NETC#程序启动闪退,目录导致的问题这是第2次踩这个坑了,很小的编程细节,容易忽略,所以写个博客,分享给大家。1.第一次坑:是windows系统把程序运行成服务,找不到配置文件,原因是以服务运行它的工作目录是在C:\Windows\System322.本次坑:WPF桌面程序通过注册表设置开机自启,开机启动就闪......
  • 蓝桥杯 试题 基础练习 十进制转十六进制 C++
    问题描述十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制......
  • C++的format函数
    C++20引入了<format>库,它提供了类似于Python的格式化字符串的功能。你可以使用std::format函数来格式化字符串。format   格式控制标记  [[fill]align][sign][#][0][wigth][precision][type]下面依次讲解format的格式控制标记的基本用法:1.[[fill]align]这个格式......
  • 群晖NAS安装Video Station结合内网穿透实现公网访问本地影音文件
    文章目录1.使用环境要求:2.下载群晖videostation:3.公网访问本地群晖videostation中的电影:4.公网条件下使用电脑浏览器访问本地群晖videostation5.公网条件下使用移动端(搭载安卓,ios,ipados等系统的设备)访问本地群晖videostation我同事老王最近刚换了新出的iPhone15P......
  • 文件按照大小排序
    文件按照大小排序OS:RedHatEnterpriseLinuxServerrelease7.9(Maipo)用的时候,经常盘就满了,得找最大的那个表,到数据库里面去查还得写sql,就干脆查文件就得了,以下是用了个空库的查询结果通过ll排序,对文件夹不够友好desc排序,并找出最大的5个[root@localhostdata......
  • 05-python函数进阶和文件
    函数函数的多返回值变量间逗号隔开,可以多种类型defhello():return1,True,"hello"x,y,z=hello()函数的传参方式位置参数,根据位置传参defcan1(x,y,z):print(x,y,z)can1(2,4,8)关键字参数,根据k=v传参,可以和位置参数混用,位置参数需要在前defcan2......
  • 爬虫(m3u8格式视频文件)
    点击查看代码importreimportrequestsfromlxmlimportetreeimportasyncioimportaiohttpimportaiofilesimportosfromCrypto.CipherimportAES#获取第一层m3u8文件的url并下载deffirst_m3u8_url(url):resp=requests.get(url,verify=False)html......
  • CMakeLists_find_package以及C++基本语法
    命令catkin_make等效于以下指令:cd~/catkin_wscdsrccatkin_init_workspacecd..mkdirbuildcdbuildcmake../src-DCMAKE_INSTALL_PREFIX=../install-DCATKIN_DEVEL_PREFIX=../devel命令cmake与makeinstall-DCMAKE_BUILD_TYPE=:releasedebug-DCMAK......
  • SpringBoot基础24_SpringBoot的配置文件4
    一、SpringBoot配置文件类型1、SpringBoot配置文件类型和作用SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者application.yml(application.yaml)进行配置。SpringBoot默认会从Resources目......
  • Java项目中的web.xml文件的作用?
    Java项目中的web.xml文件是JavaWeb应用程序的核心配置文件,它是根据JavaServlet规范定义的部署描述符(DeploymentDescriptor)。在传统的Servlet/JSP应用中,web.xml文件位于Web应用的WEB-INF目录下,用于配置Web应用的行为和组件设置,具体作用包括但不限于以下几点:配置Servlet:......