首页 > 编程语言 >C++:istream、ostream和fstream类

C++:istream、ostream和fstream类

时间:2024-07-22 14:26:16浏览次数:10  
标签:std 文件 What stream fstream outStream istream ostream

1、基类 istream 和 ostream

(1)istream

A.What

输入流的抽象类,是所有输入流类的基类

B.Why(输入流的作用)

用于从数据源(如文件、标准输入设备等外部设备)读取数据到内存中

(2)ostream

A.What

输出流的抽象类,是所有输出流类的基类

B.Why(输出流的作用)

输出流用于将数据从内存中写入到目标位置(外部设备),例如文件或标准输出设备(通常是屏幕)

(3)输入输出流的状态

A.Which

goodbit:表示流处于正常状态,可以进行正常的输入和输出
eofbit:表示已经到达文件末尾或流的结束位置,当文件读取完毕时,eofbit会被设置为1
failbit:表示流操作失败,如尝试将字符写入只读文件、尝试从空文件中读取数据
badbit:表示流已经崩溃或数据出现问题,如打开不存在的文件、内存不足等

stream.good();
stream.eof();
stream.fail();
stream.bad();

B.How(如何操作流状态)

获取流的状态:stream.rdstate()

if(istream.rdstate() & std::ios_base::badbit)
{ 
	std::cout<<"badbit error!"<<std::endl;
}

复位流状态位:goodbit设置为1,其它设置为0

istream.clear();

设置指定状态位为1:但 stream.setstate(goodbit)不合法

istream.setstate(std::ios_base::failbit | std::ios_base::eofbit);

2、派生类fstream

(1)fstream

A.What

C++ 标准库中用于文件输入输出操作的文件流类

B.Why

实现对文件的输入和输出操作

C.文件打开方式

模式说明
in以读的方式打开文件
out以写的方式打开文件,写数据后原文件将被覆盖
out | trunc当以 trunc 模式打开文件时,如果该文件存在, 则先清空,后写入新数据。如果文件不存在,则创建
out | app每次写操作均定位到文件末尾
binary二进制形式打开文件(in&out)
ate打开文件后立即定位到文件末尾(in&out)

(2)ifstream

A.What

文件输入流类,是istream的派生类

B.Why

用于实现从文件中读取数据

C.How

std::string strFilePth = "D:\\Desktop\\a.txt";
// 以读的方式打开文件
std::ifstream inStream;
inStream.open(strFilePth);
if (!inStream.is_open())
{
	std::cerr << "Failed to open file" << std::endl;
	return;
}
char ch[10];
while (inStream.read(ch, 10))
{
	
	std::cout << ch << std::endl;
}
inStream.close();

(3)ofstream

A.What

文件输出流类,是ostream的派生类

B.Why

用于向文件中写入数据

C.How

std::string strFilePth = "D:\\Desktop\\a.txt";
// 以写的方式打开文件
std::ofstream outStream;
outStream.open("D:\\Desktop\\a.txt", std::ios_base::app);
if (!outStream.is_open())
{
	std::cerr << "Failed to open file" << std::endl;
	return;
}
// 向文件中写入数据
int i = 0;
while (!outStream.eof())
{
	outStream << "wodeshijie" << std::endl;
	++i;
	if (i >= 10)
	{
		outStream.setstate(std::ios_base::eofbit);
		
	}
}
outStream.close();

标签:std,文件,What,stream,fstream,outStream,istream,ostream
From: https://blog.csdn.net/qq_42279379/article/details/140600342

相关文章

  • 【C++】C++标准库iostream中cin、cout、cerr、clog方法解析
    目录一.iostream库介绍1.iostream主要的组件2.使用 iostream 二.cin介绍及使用三.cout介绍及使用四.cerr介绍及使用五.clog介绍及使用一.iostream库介绍1.iostream主要的组件在C++中, iostream 是一个非常核心的头文件,它定义了基本的输入输出流。这个头文件是......
  • 流量特征提取工具NFStream
    目录前言NFStreamNFStreamerPandasDataframe转换CSV文件转换NFStream特征提取事后统计流特征提取早期统计流特征提取应用层可见性特征提取系统的可见性前言之前介绍了关于stratum协议挖矿流量的一些内容,今天来介绍一下一款好用的流量特征提取工具NFStream,它可以很好的帮助我们......
  • 随笔记录篇——C++iostream库 以及std
    这篇文章非原创,来自我学习过程中看到的其他博主发的一些资料,解决了我的疑问,在此进行整理。C语言的标准输入输出库是stdio.h库,是一个函数库,而不是类库。其中包含了我们其中所用的scanfpringf都是一些独立的全局函数,因为C语言是不支持类的。C++的标准输入输出库iostream是一个类......
  • fstream
    C++输入输出流对标准设备的输入输出,键盘读入,输出至显示器,称为标准I/O对外存文件的输入输出,文件输入数据,数据输出到文件,称为文件I/O对内存中指定的空间进行输入输出,称为串I/O重点学习fstream(即文件I/O)getcharc;c=cin.get();//从键盘上获得一个字符,赋值给cchar......
  • C++ #include <iostream> 和 #include <iostream.h>的区别
    #include和#include<iostream.h>区别1.#include是C++调用头文件的使用方式,这种情况下需要加上usingnamespacestd;指定命名空间2.#include<iostream.h>C++保留了C的这种写法,这种不需要增加命名空间指定#include<stdio.h>和#include"stdio.h"区别-#include<stdio......
  • could not find boost (missing iostreams) (found version xxxx)
    具体报错信息如上图,通过终端指定-DBOOST_LIBRARYDIR是无效的,需要在cmakelis中修改。注意这里报错溯源是cmakelistline29,所以修改如下set(CMAKE_INCLUDE_PATH${CMAKE_INCLUDE_PATH}"/home/rzhang/del/include")###新增set(CMAKE_LIBRARY_PATH${CMAKE_LIBRARY_PATH}"/h......
  • error C1083: 无法打开包括文件:“iostream.h”: No such file or directory
    用VS2010打开VC++6程序,按下F5键会发现有错误提示:errorC1083:无法打开包括文件:“iostream.h”:Nosuchfileordirectory;而程序在VC++6中没有任何问题!主要的原因是:1.#include<iostream.h>是原来的C语言里面的,而#include<iostream>是c++的标准库里的,而要调用这个这个标准库......
  • rdma-core之riostream.c
    头文件和库以及全局变量#include<stdio.h>#include<stdlib.h>#include<string.h>#include<strings.h>#include<errno.h>#include<getopt.h>#include<sys/types.h>#include<sys/socket.h>#include<sys/time.h>#i......
  • ofstream 追加模式
    #includeusingnamespacestd;intmain(){ofstreamoutfile("example.txt",ios::app);if(outfile.is_open()){outfile<<"Thisisanewline.\n";outfile.close();}elsecout<<"Una......
  • std::ofstream 写本地音频
    最近线上PK偶然出现双方主播互相听不见声音的情况,在日志不能明确体现问题时,就需要抓下主播本地的音频和远端的音频来确定数据是在哪消失的所以我们用到一个比较简单的流写出的标准库类:std::ofstream通过std::ofstream 类,可以创建一个用于写入文件的输出流对象,可以将数据写入......