输入输出(1)——C++的输入输出概述

news2024/11/13 18:12:35

目录

一、C++的输入输出

(一)  C++的输入输出

(二)C语言的scanf和printf

二、C++的输入输出流

(一)   iostream类库中有关的类

(二) iostream.h头文件的流对象和重载运算符


一、C++的输入输出

(一)  C++的输入输出

之前用到的输入输出,都是以终端为对象——即从键盘输入数据,运行结果到显示器屏幕上。

操作系统把每一个与主机相连的输入输出设备都看作为一个文件键盘是输入文件,显示器和打印机是输出文件,除了以终端为对象进行输入输出以外,还经常用磁盘或光盘作为输入输出对象,磁盘文件可以作为输入文件,也可以作为输出文件。

C++的输入输出包括三个方面:
(1)对系统指定的标准设备的输入输出,简称为标准I/O。例如:从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出。

(2)以磁盘或者光盘文件为对象进行的输入输出,简称为文件I/O。例如:从磁盘文件输入数据给程序,程序的数据输出到磁盘文件。这种以外存文件为对象的输入输出称为文件的输入输出。

(3)对内存中指定的空间进行输入输出。简称串I/O。例如:指定一个字符数组为存储空间(实际该空间可以存储任何信息)。这种以输入输出称为字符串的输入输出。

(二)C语言的scanf和printf

在C语言中,用scanf和printf进行输入输出,%d是用来输出一个整数,可能会不小心用它输出单精度变量和字符串。用错了数据类型,而编译也能通过

C++兼容C语言,同时利用继承的机制创建出自己输入输出系统——输入输出(I/O)流库

在使用C++的输入输出系统时,会对数据类型进行严格的检查,不正确的就会进行编译报错。另外C++的输入输出系统是可扩展的,不仅可以用来输入输出标准类型的数据,也可以用于用户自定义数据类型。

二、C++的输入输出流

输入输出是数据传送的过程,数据如流水一样从一处流向另一处。流是信息从源到目的端的流动。

C++的输入输出流是指由若干字节组成的字节序列,这些字节中数据按顺序从一个对象传送到另一个对象。

在输入操作时,字节流从输入设备(键盘,磁盘)流向内存。

在输出操作时,字节流从内存流向输出设备(屏幕,打印机,磁盘)。

流中的内容可以是ASCII字符、二进制形式的数据、图形图像、数字音频视频或者其他形式的信息。

C++中的I/O流库中的类称为流类。用流类定义的对象称为流对象。

cout和cin并不是C++中提供的语句,他们是I/O流类的对象。

(一)   iostream类库中有关的类

C++提供了用于输入输出的iostream类库。在 iostream类库中包含许多用于输入输出的类。这些类。这些类的继承层次结构如下图:

ios是抽象基类,由它派生出istream 类和 ostream类。

istream类支持输人操作,ostream类支持输出操作。

iostream类是从istream类和ostream类通过多重继承而派生的类

iostream类支持输入输出操作。

为了实现对文件的操作,C++的iostream类库中派生定义了用于文件操作的类,

它们分别是如下几个类:
fstreambase类:这是一个公共基类,文件操作中不直接使用这个类。
ifstream类:派生自fstreambase类和istream类,负责对文件进行提取操作

ofstream类:派生自fstreambase类和ostream类,负责对文件进行插入操作

fstream类:派生自fstreambase类和iostream类,负责对文件进行提取和插入操作

strstreambase是字符串流类基类,它派生定义了用于字符串操作的类:istrstream,ostrstream 和strstream。



iostream类库中不同类的声明被放在不同的头文件中。用户在程序中用预处理命令“#include”包含有关的头文件就相当于在本程序中声明了所需要用到的类。

编程时常用的头文件如下。
iostream.h:包含了对输人输出流进行操作所需的基本信息

fstream.h:用于用户管理的文件的 I/O操作
strstream.h:用于字符串的I/O操作。
stdiostream.h:用于混合使用C和C+的I/O操作
iomanip.h:用于格式化 I/O操作。

(二) iostream.h头文件的流对象和重载运算符

在iostream.h头文件中定义的类有 ios、istream,ostream,iostream,istream_withassign,ostream _withassign,iostream_withassign等

在iostream.h头文件中不仅定义了有关的类,还定义了下4种流对象供用户使用。

(1)cin:是istream 的派生类 istream_withassign的对象,是从标准输人设备(键盘输入到内存的数据流,称为cin流或标准输入流。
(2)cout:是ostream的派生类 ostream_withassign的对象,是从内存输出到标准出设备(显示器)的数据流,称为cout流或标准输出流。
(3)cerr 和clog:作用相似,均为向输出设备(显示器)输出出错信息。它们的区别是cerr提供不带缓冲区的输出,clog提供带缓冲区的输出。

从键盘输人时用cin流,

向显示器输出时用cout流

向显示器输出出错信息时用 cerr 或 clog 流。

本来“<<”和“>>”在C++中是被定义为左移位运算符和右移位运算符,在iostream.h头文件中对它们进行了重载,使它们能被用作标准类型数据的输入和输出运算符

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

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

相关文章

最近5星好评的华为的书《常变与长青》

常变与长青 (豆瓣) 作者简介 郭平&#xff0c;1988年加入华为&#xff0c;历任产品开发部项目经理、供应链总经理、总裁办主任、管理工程部总裁、企业发展部总裁、终端公司董事长兼总裁、公司轮值CEO、财经委员会主任、公司副董事长、轮值董事长等职务&#xff0c;现任公…

Science 基于尖峰时序编码的模拟神经触觉系统,可实现动态对象分类

快速处理和有效利用手与物体交互过程中产生的动态触觉信号&#xff08;例如触摸和抓握&#xff09;对于触觉探索和灵巧的物体操作至关重要。将电子皮肤&#xff08;e-skins&#xff09;推进到模仿自然触觉的水平&#xff0c;是恢复截肢者和瘫痪患者丧失的功能的可行解决方案&am…

IDE上传本地仓库到GitHub

IDE上传本地仓库到GitHub 1、选择远程仓库平台2、下载安装Git3、IDE集成Git4、本地项目上传GitHub 1、选择远程仓库平台 1.1、注册远程仓库平台 常见的远程仓库托管平台有&#xff1a; 1&#xff09;GitHub 域名&#xff1a;https://github.com 介绍&#xff1a;GitHub是全球最…

CAD二次开发(4)-编辑图形

工具类&#xff1a;EditEntityTool.cs using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Th…

等保2.0看这一篇就够了

一、等级保护介绍 1.1什么是等级保护 网络安全等级保护是指对国家重要信息、法人和其他组织及公民的专有信息以及信息和存储、传输、处理这些信息的信息系统分等级实行安全保护&#xff0c;对信息系统中使用的信息安全产品实行按等级管理&#xff0c;对信息系统中发生的信息安…

有人物联网4G模块【WH-LTE-7S1】超简单上云流程完整版~!(一)

目录 前言一、所需环境二、使用步骤1.官方资料包获取2.硬件连接3.云平台配置 四、结尾 前言 废话不多说直接上干货 一、所需环境 1、有人家的WH-LTE-7S1&#xff08;带配套底板&#xff09;。 2、串口工具&#xff08;TTL或USB485&#xff09;。二、使用步骤 1.官方资料包获…

颜色值进制转换

颜色值进制转换 专业的和非专业程序员在编程时都碰到过颜色值的表达式。特别是在编制网页和设计界面时&#xff0c;都要选择颜色。各语言的颜色值表达式就两种&#xff0c;十六进制的颜色值hex$和十进制的RGB格式。现成的调色板颜色表也是这两种格式。写代码时会遇到写颜色值码…

NVIDIA Jetson 上编译opencv 4.9.0

直接上命令 cmake .. \ -DCMAKE_C_COMPILER/usr/bin/gcc-7 -DCMAKE_CXX_COMPILER/usr/bin/g-7 \ -DCMAKE_BUILD_TYPERelease \ -DCMAKE_INSTALL_PREFIX/usr/local \ -DOPENCV_ENABLE_NONFREE1 \ -DBUILD_opencv_python21 \ -DBUILD_opencv_python31 \ -DCUDA_TOOLKIT_ROOT_DIR…

使用Django框架搭建Web应用

文章目录 简介安装Django创建一个Django项目创建一个Django应用编写视图配置URL运行开发服务器总结与拓展数据库集成管理后台表单处理模板引擎安全性 简介 Django 是一款基于 Python 语言的开源 Web 应用框架&#xff0c;采用了 MVC&#xff08;模型-视图-控制器&#xff09;设…

运筹说 第115期 | 排队论经典例题讲解

通过前几期的学习&#xff0c;我们已经学会了排队论的基本概念、生灭过程和Poisson过程&#xff0c;等待制排队模型、混合制排队模型、其他排队模型以及排队系统优的定义与相关求解方法。在实际工作中&#xff0c;我们能发现排队论在经济管理中有着许多应用&#xff0c;本期小编…

神经网络的工程基础(一)——利用PyTorch实现梯度下降法

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型&#xff1a;从线性回归到通用人工智能》&#xff0c;欢迎有兴趣的读者多多支持。 本文涉及到的代码链接如下&#xff1a;regression2chatgpt/ch06_optimizer/gradient_descent.ipynb 本文将讨论利用PyTorch实现…

高斯过程学习笔记

目录 基础知识 例子 推荐 A Visual Exploration of Gaussian Processes (distill.pub) AB - Introduction to Gaussian Processes - Part I (bridg.land) 基础知识 高斯过程回归&#xff08;Gaussian Process Regression&#xff09; - 知乎 (zhihu.com) 高斯过程&#x…

VS2022上通过C++绘图库ROOT库绘制一个3D曲面图

ROOT库提供了强大的交互式图形功能。通过使用ROOT库的TCanvas和TApplication类&#xff0c;可以创建一个交互式的图形窗口&#xff0c;可以对图形进行缩放、平移、旋转等操作&#xff0c;并且可以通过鼠标和键盘与图形进行交互&#xff0c;这点实在是太厉害了&#xff0c;也就是…

贪心算法4(c++)

过河的最短时间 题目描述 输入 在漆黑的夜里&#xff0c;N位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话&#xff0c;大家是无论如何也不敢过桥去的。不幸的是&#xff0c;N个人一共只带了一只手电筒&#xff0c;而桥窄得只够让两个人同时过&#xff0c;如果…

Java进阶学习笔记21——泛型概念、泛型类、泛型接口

泛型&#xff1a; 定义类、接口、方法的时候&#xff0c;同时声明了一个或者多个类型变量&#xff08;如: <E>&#xff09;,称之为泛型类、泛型接口、泛型方法&#xff0c;我们统称之为泛型。 说明这是一个泛型类。 如果不使用泛型&#xff0c;我们可以往ArrayList中传…

【多线程开发 2】从代码到实战TransmittableThreadLocal

【多线程开发 2】从代码到实战TransmittableThreadLocal 本文将从以下几个点讲解TransmittableThreadLocal(为了方便写以下简称ttl)&#xff1a; 前身 是什么&#xff1f; 可以用来做什么&#xff1f; 源码原理 实战 前身 ThreadLocal 要了解ttl就要先了解Java自带的类…

【C语言】指针作为参数(传值调用vs传址调用)

前言 在前面讲了那些指针相关的内容后&#xff0c;是时候探讨一下指针有什么作用了。 在C语言中&#xff0c;指针有多种各不相同的应用&#xff0c;在本篇文章中&#xff0c;我们探讨一下指针作为函数参数的作用&#xff08;对比传值与传址两种不同函数调用方式&#xff09;。…

解决git克隆项目出现fatal无法访问git clone https://github.com/lvgl/lvgl.git

Windows 11系统 报错 $ git clone https://github.com/lvgl/lvgl.git Cloning into lvgl... fatal: unable to access https://github.com/lvgl/lvgl.git/: Failed to connect to github.com port 443 after 21141 ms: Couldnt connect to server 解决方法 git运行这两段代码…

008-Linux后台进程管理(作业控制:、jobs、fg、bg、ctrl + z、nohup)

文章目录 前言 1、& 2、ctrl z 3、jobs 4、fg&#xff1a;将后台进程调到前台执行 5、bg&#xff1a;将一个暂停的后台进程变为执行 6、&和nohup 总结 前言 有时候我们需要将一个进程放到后台去运行&#xff0c;或者将后台程序切换回前台&#xff0c;这时候就…

LabVIEW如何实现多张图拼接

在LabVIEW中实现相机多次拍摄进行拼接的过程&#xff0c;可以分为以下几个步骤&#xff1a;设置相机参数、控制相机拍摄、图像处理与拼接、显示和保存结果。以下是一个详细的实现方案&#xff1a; 1. 设置相机参数 首先需要配置相机的参数&#xff0c;例如分辨率、曝光时间、…