当前位置: 首页 > news >正文

输入输出流

1.输入输出流

输入/输出流类:iostream---------i  input(输入)    o output(输出)   stream:流

iostream:

istream类:输入流类-------------cin:输入流类的对象

ostream类:输出流类------------cout:输出流类的对象

1.1 输入流 istream

1.1.1 基本认识

数据是从键盘或显示器流向输入缓冲区中,最后刷新了再流向内存

istream实例化了cin对象  ,  重载了运算符:>>

输入格式:cin>>变量1;cin>>变量1>>变量2>>变量3.........;原型:istream &cin >>基本的数据类型;istream &cin >>int;istream &cin >>char;.......

1.1.2 重点 

如果需要一次性输入多个数据,那么多个数据需要用空格进行间隔,另外需要输入回车,把输入的内容刷新到内存中

1.1.3 举例

iostream.cpp
// 输入流
int main()
{int number;int number2;cout << "请输入两个数字" << endl;cin >> number >> number2;cout << "number=" <<number<<"  number2"<<number2 << endl;return 0;
}

1.2 输出流 ostream

数据是从内存流向输出缓冲区刷新时再从输出缓冲区流向终端或显示器

缓冲区的大小:

#define  BUFSIZ   512个字节

查看缓冲区大小

iostream.cpp

#include "iostream"
using namespace std;int main()
{cout << "缓冲区大小:" << BUFSIZ << endl;//查看缓冲区大小return 0;
}

1.2.1 基本认识

ostream实例化了cout对象、cerr对象(发生一些错误就会调用cerr输出错误信息)、clog对象(输出一些日志信息)

重载了运算符:<<

输出格式:cout<<数据1;cout<<数据1<<数据2<<数据3,........;

原型

ostream类中:ostream &  operator  <<(int)//重载int类型{ostream cout;.....return  cout;}ostream &  operator  <<(char)//重载char类型{}

ostream  &cout  <<  基本的数据类型;

ostream  &cout  <<  int ;

ostream  &cout  << char;

ostream  &cout  << unsigned int;

ostream  &cout  << char *;

ostream  &cout  << const char *;

ostream  &cout  << float;

.........

举例采用格式化输出

C语言的格式化输出也支持:\n、\r、.......

十进制形式输出:<iomanip>

dec:十进制

oct:八进制

hex:十六进制

....

iostream.cpp

#include "iostream"
using namespace std;//输出流
int main()
{cout << "缓冲区大小:" << BUFSIZ << endl;//查看缓冲区大小cerr << "hello world" << endl;cout << "\n" << endl;cout << dec << 17 << endl;cout << oct << 17 << endl;cout << hex << 17 << endl;clog << "你好,世界" << endl;cout << "hello" << 10 << 10.5 << 'a' << endl;return 0;
}

1.2.2 使输出流重载我们的字节定义的类型people试试

 iostream.cpp
// 使输出流重载我们的字节定义的类型people试试
class People {
public:People(int a, char b, double c){this->a = a;this->b = b;this->c = c;}int a;char b;double c;
};//重载输出流运算符  <<  ,使他可以输出我们自定义类型
void operator <<(ostream& out, People& people)
{out << people.a << endl;out << people.b << endl;out << people.c << endl;}int main()
{//实例化对象People people(10, 'v', 50.4);//输出(在我们没有重载前是不能输出people类型的)cout << people;return 0;
}

// 使输出流重载我们的字节定义的类型people试试
class People {
public:People(int a, char b, double c){this->= a;this->= b;this->= c;}int a;char b;double c;
};//重载输出流运算符  <<  ,使他可以输出我们自定义类型
void operator <<(ostream& out, People& people)
{
	out << people.<< endl;
	out << people.<< endl;
	out << people.<< endl;}int main()
{//实例化对象
	People people(10, 'v', 50.4);//输出(在我们没有重载前是不能输出people类型的)
	cout << people;return 0;
}

1.2.3 重点:

1)当输出遇到endl时,会刷新输出缓冲区

2)当流对象使用完或超出作用域时,也会刷新输出缓冲区

3)当输出缓冲区装满时,也会刷新一次缓冲区

1.3 总结

#include <iostream>  
#include<string>  
#include <iomanip> //不要忘记包含此头文件  
using namespace std;  
int main()  {   int a;  cout<<"input a:";  cin>>a;  cout<<"dec:"<<dec<<a<<endl; //以上进制形式输出整数  cout<<"hex:"<<hex<<a<<endl; //以十六进制形式输出整数a  cout<<"oct:"<<setbase(8)<<a<<endl;//以八进制形式输出整数a  string pt= "China";         //pt指向字符串”China”  cout<<setw(10)<<pt<<endl; //指定域宽为10,输出字符串  cout<<setfill('*')<<setw(10)<<pt<<endl;//指定域宽10,输出字符串,空白处以“*”填充  double pi=22.0/7.0; //计算pi值  cout<<setiosflags(ios::scientific)<<setprecision(8);//按指数形式输出,8位小数  cout<<"pi="<<pi<<endl; //输出pi值  cout<<"pi="<<setprecision(4)<<pi<<endl;//改为4位小数  cout<<"pi="<<setiosflags(ios::fixed)<<pi<<endl;//改为小数形式输出,精度为4   cout<<"pi="<<fixed<<pi<<endl;//fixed确定小数点后精度为4   cout.setf(ios::showbase); //设置输出时的基数符号  cout<<"dec:"<<a<<endl; //默认以十进制形式输出a  cout.unsetf(ios::dec); //终止十进制的格式设置  cout.setf(ios::hex); //设置以十六进制输出的状态  cout<<"hex:"<<a<<endl; //以十六进制形式输出a  cout.unsetf(ios::hex); //终止十六进制的格式设置  cout.setf(ios::oct); //设置以八进制输出的状态  cout<<"oct:"<<a<<endl; //以八进制形式输出a  cout.unsetf(ios::oct); //终止以八进制的输出格式设置  char *pt="China"; //pt指向字符串”china”  cout.width(10); //指定域宽为10  cout<<pt<<endl; //输出字符串  cout.width(10); //指定域宽为10  cout.fill('*'); //指定空白处以'*'填充  cout<<pt<<endl; //输出字符串  double pi=22.0/7.0; //计算pi值  cout.setf(ios::scientific);//指定用科学记数法输出  cout<<"pi="; //输出"pi="  cout.width(14); //指定域宽为14  cout<<pi<<endl; //输出"pi值  cout.unsetf(ios::scientific); //终止科学记数法状态  cout.setf(ios::fixed); //指定用定点形式输出  cout.width(12); //指定域宽为12  cout.setf(ios::showpos); //在输出正数时显示“+”号  cout.setf(ios::internal); //数符出现在左侧  cout.precision(6); //保留6位小数  cout<<pi<<endl; //输出pi,注意数符“+”的位置  return 0;   
}  
运行结果如下:   
inputa:34 (输入a的值)   
dec:34 (十进制形式)   
hex:22 (十六进制形)   
oct:42 (八进制形式)   
China (域宽为10)   
***** China (域宽为10,空白处以'*'填充)   
pi=3.14285714e+00 (指数形式输出,8位小数)   
pi=3.1429e+00) (指数形式输小,4位小数)   
pi=3.143 (小数形式输出,精度仍为4)   
pi=3.1429(fixed确定小数点后精度为4 )dec:21 (十进制形式)hex:Oxl5 (十六进制形式,以0x开头)oct:025 (八进制形式,以O开头)China (域宽为10)*****china (域宽为10,空白处以'*'填充)pi=**3.142857e+00 (指数形式输出,域宽14,默认6位小数)****3.142857 (小数形式输㈩,精度为6,最左侧输出数符“+”)

2. 请阐述重载、重写、覆盖/隐藏的区别是什么?

(1)函数重载(Overloading):

定义: 函数重载是指在同一个作用域内,定义多个具有相同名称但参数列表不同的函数。

条件: 函数名相同,但参数的类型、个数或顺序不同。

作用: 提供了更灵活的函数调用方式,根据参数的不同选择调用不同版本的函数。

int add(int a, int b);
double add(double a, double b);

(2)函数重写(Overriding):

定义: 函数重写是指在派生类中重新定义基类中已经存在的虚函数。

条件: 基类中的函数必须是虚函数,派生类中的函数要有相同的函数签名(函数名、参数类型和返回类型必须保持一致)。

作用: 允许派生类提供特定于派生类的实现,实现多态。

class Base {
public:virtual void display() const;
};class Derived : public Base {
public:void display() const override;
};

3成员隐藏/覆盖(Member Hiding/Overriding):

定义: 当派生类中的函数屏蔽了基类中的同名函数时,称为成员隐藏或覆盖。

条件: 派生类中的函数与基类中的函数同名,但参数列表可以不同。(说人话就是,只要子类的函数与父类的函数有同名的,即使只要函数名相同,调用这个函数就是调用子类的)

作用: 防止基类的同名函数被派生类继承,如果没有使用 using 关键字,基类的同名函数在派生类中会被隐藏。

class Base {
public:void display() const;
};class Derived : public Base {
public:void display(int x) const;  // 隐藏了基类中的 display 函数
};

相关文章:

输入输出流

1.输入输出流 输入/输出流类&#xff1a;iostream---------i input&#xff08;输入&#xff09; o output&#xff08;输出&#xff09; stream&#xff1a;流 iostream&#xff1a; istream类&#xff1a;输入流类-------------cin&#xff1a;输入流类的对象 ostream类…...

IOS:Safari无法播放MP4(H.264编码)

一、问题描述 MP4使用H.264编码通常具有良好的兼容性&#xff0c;因为H.264是一种广泛支持的视频编码标准。它可以在许多设备和平台上播放&#xff0c;包括电脑、移动设备和流媒体设备。 使用caniuse查询H.264兼容性&#xff0c;看似确实具有良好的兼容性&#xff1a; 然而…...

Pycharm恢复默认设置

window 系统 找到下方目录-->删除. 再重新打开Pycharm C:\Users\Administrator\.PyCharm2023.3 你的不一定和我名称一样 只要是.PyCharm*因为版本不同后缀可能不一样 mac 系统 请根据需要删除下方目录 # Configuration rm -rf ~/Library/Preferences/PyCharm* # Caches …...

简单计算器实现,包括两个数

正在加载中... 简单计算器实现&#xff0c;包括两个数 ❤ 厾罗 简单计算器实现&#xff0c;包括两个数 以下代码用于实现简单计算器实现&#xff0c;包括两个数基本的加减乘除运算&#xff1a; 实例(Python 3.0) # Filename : test.py # author by : www.dida100.com …...

竞赛保研 基于机器视觉的手势检测和识别算法

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的手势检测与识别算法 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng…...

Android App从备案到上架全过程

不知道大家注意没有,最近几年来,新的移动App想要上架是会非常困难的,并且对于个人开发者和小企业几乎是难如登天,各种备案和审核。但是到底有多难,或许只有上架过的才会有所体会。 首先是目前各大应用市场陆续推出新的声明,各种备案截止日期到12月就要到最后期限责令整改…...

用邮件及时获取变更的公网IP--------python爬虫+打包成exe文件

参考获取PC机公网IP并发送至邮箱 零、找一个发送邮件的邮箱 本文用QQ邮箱为发送邮箱&#xff0c;网易等邮箱一般也有这个功能&#xff0c;代码也是通用的。 第一步&#xff1a;在设置中找到账户&#xff0c;找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务&#xff0c;点击获…...

c++学习:函数模板+实战

目录 函数模板 思考 如果两个参数的类型不一样可以下面这么写 如果有指定返回参数可以下面这么写 实战 找出三个数中最大的一个 函数模板 实际上就是建立一个通用函数&#xff0c;其函数返回值类型和形参类型不具体指定&#xff0c;用一个虚拟的类型来代表template 是一个…...

three.js gltf后处理颜色异常(伽马校正)

效果&#xff1a; 应用了伽马校正&#xff0c;好像效果不明显 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"><…...

面试经典150题(55-58)

leetcode 150道题 计划花两个月时候刷完&#xff0c;今天&#xff08;第二十四天&#xff09;完成了4道(55-58)150&#xff1a; 55.&#xff08;19. 删除链表的倒数第 N 个结点&#xff09;题目描述&#xff1a; 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff…...

如果一个n位正整数等于其各位数字的n次方之和

❤ 厾罗 如果一个n位正整数等于其各位数字的n次方之和 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 5^3 3^3 153。 1000以内的阿姆斯特朗数&#xff1a; 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407。 以下代码用于检测用户输…...

solidity显示以太坊美元价格

看过以太坊白皮书的都知道&#xff0c;以太坊比较比特币而言所提升的地方中&#xff0c;我认为最重要的一点就是能够访问外部的数据&#xff0c;这一点在赌博、金融领域应用会很广泛&#xff0c;但是区块链是一个确定的系统&#xff0c;包括里面的所有数值包括交易ID等都是确定…...

ChatGPT学习笔记——大模型基础理论体系

1、ChatGPT的背景与意义 近期,ChatGPT表现出了非常惊艳的语言理解、生成、知识推理能力, 它可以极好的理解用户意图,真正做到多轮沟通,并且回答内容完整、重点清晰、有概括、有条理。 ChatGPT 是继数据库和搜索引擎之后的全新一代的 “知识表示和调用方式”如下表所示。 …...

Termius for Mac/Win:一款功能强大的终端模拟器、SSH 和 SFTP 客户端软件

随着远程工作和云技术的普及&#xff0c;对于高效安全的远程访问和管理服务器变得至关重要。Termius&#xff0c;一款强大且易用的终端模拟器、SSH 和 SFTP 客户端软件&#xff0c;正是满足这一需求的理想选择。 Termius 提供了一站式的解决方案&#xff0c;允许用户通过单一平…...

python如何读取被压缩的图像

读取压缩的图像数据&#xff1a; PackBits 压缩介绍&#xff1a; CCITT T.3 压缩介绍&#xff1a; 读取压缩的图像数据&#xff1a; 在做图像处理的时候&#xff0c;平时都是使用 函数io.imread() 或者是 函数cv2.imread( ) 函数来读取图像数据&#xff0c;很少用PIL.Image…...

华为OD机试 - 寻找最优的路测线路(Java JS Python C)

题目描述 评估一个网络的信号质量,其中一个做法是将网络划分为栅格,然后对每个栅格的信号质量计算。 路测的时候,希望选择一条信号最好的路线(彼此相连的栅格集合)进行演示。 现给出 R 行 C 列的整数数组 Cov,每个单元格的数值 S 即为该栅格的信号质量(已归一化,无单…...

互联网演进历程:从“全球等待”到“全球智慧”的技术革新与商业变革

文章目录 一、导言二、World Wide Wait (全球等待)阶段1. 技术角度2. 用户体验3. 企业收益4. 教育影响 三、World Wide Web (万维网)阶段1. 技术角度2. 用户体验3. 企业收益4. 教育影响 四、World Wide Wisdom (全球智慧)阶段1. 技术角度2. 用户体验3. 企业收益4. 教育影响 五、…...

计算机组成原理——总线

总线特点 1.1. 分时&#xff1a;分时是指同一时刻只允许有一个部件向总线发送信息&#xff0c;若系统中有多个部件&#xff0c;则它们只能分时地向总线发生信息。 1.2. 共享&#xff1a;共享是指总线上可以挂接多个部件&#xff0c;各个部件之间互相交换的信息都可以通过这组线…...

2023.12.27 关于 Redis 数据类型 List 常用命令

目录 List 类型基本概念 List 类型特点 List 操作命令 LPUSH LPUSHX RPUSH RPUSHX LRANGE LPOP RPOP LINDEX LINSERT LREM LTRIM LSET 阻塞版本的命令 阻塞版本 和 非阻塞版本的区别 BLPOP & BRPOP List 类型基本概念 Redis 中的列表&#xff08;list&am…...

【Web】vulhub-httpd apache解析漏洞复现(1)

目录 ①CVE-2017-15715 ②apache_parsing_vulnerability ①CVE-2017-15715 贴出源码&#xff1a; <?php if(isset($_FILES[file])) {$name basename($_POST[name]);$ext pathinfo($name,PATHINFO_EXTENSION);if(in_array($ext, [php, php3, php4, php5, phtml, pht]))…...

市场复盘总结 20240103

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整 昨日回顾: 方法一:指标选股 select * from dbo.ResultAll where 入选类型 like %指标选股% and 入选日期=20240103;方法二:趋势选股法 1、最低价持续3日上涨 2、均价…...

Java技术栈 —— Redis的雪崩、穿透与击穿

Java技术栈 —— Redis的雪崩、穿透与击穿 〇、实验的先导条件&#xff08;NginxJmeter&#xff09;一、Redis缓存雪崩、缓存穿透、缓存击穿1.1 雪崩1.2 穿透1.3 击穿 二、Redis应用场景——高并发2.1 单机部署的高并发问题与解决&#xff08;JVM级别锁&#xff09;2.2 集群部署…...

Scala知识点——App类

我们在代码中一般程序都是是通过main方法进入。但是在scala中提供了一个App类&#xff0c;通过继承可以实现不用显式的调用main方法就能运行。 App类中实现了main方法&#xff1a;...

(vue)增加行,对应行删除

(vue)增加行&#xff0c;对应行删除 效果&#xff1a; 代码&#xff1a; <div v-for"(ele,i) of algorithmList" :key"i"><el-form-item label"模型类型"><el-selectv-model"ele.algorithmId"placeholder"选择模…...

案例088:基于微信小程序的校车购票平台设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…...

pytorch集智-1安装与简单使用

1 安装 1.1 简介 pytorch可用gpu加速&#xff0c;也可以不加速。gpu加速是通过cuda来实现&#xff0c;cuda是nvidia推出的一款运算平台&#xff0c;它可以利用gpu提升运算性能。 所以如果要装带加速的pytorch&#xff0c;需要先装cuda&#xff0c;再装pytorch&#xff0c;如…...

『番外篇六』SwiftUI 取得任意视图全局位置的三种方法

概览 在 SwiftUI 开发中,利用描述性代码我们可以很轻松的构建各种丰富多彩的视图。我们可以设置它们的大小、位置、颜色并应用不计其数的修改器。 但是,小伙伴们是否想过在 SwiftUI 中如何获取一个视图的全局位置坐标呢? 在本篇博文中,您将学到如下内容: 概览1. SwiftU…...

Ribbon相关面试及答案(2024)

1、Ribbon是什么&#xff0c;它在微服务架构中扮演什么角色&#xff1f; Ribbon是一个客户端负载均衡器&#xff0c;它在微服务架构中扮演着关键性的角色。Ribbon的设计理念是在客户端进行服务发现和负载均衡&#xff0c;这种方式不同于传统的通过中心化的负载均衡器&#xff…...

【Mybatis】深入学习MyBatis:CRUD操作与动态SQL实战指南

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; Mybatis ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 一基本用法 1 CRUD操作 1. 增加&#xff08;Create&#xff09; 2. 查询&#xff08;Read&#xff09; 3. 更新&#x…...

前端uniapp的tab选项卡for循环切换、开通VIP实战案例【带源码/最新】

目录 效果图图1图2 源码最后 这个案例是uniapp&#xff0c;同样也适用Vue项目&#xff0c;语法一样for循环&#xff0c;点击切换 效果图 图1 图2 源码 直接代码复制查看效果 <template><view class"my-helper-service-pass"><view class"tab…...

外国网站dns/广告营销

技术名称官网jQuery函式库http://jquery.com/Bootstrap前端框架http://getbootstrap.com/Bootstrap-tableBootstrap数据表格http://bootstrap-table.wenzhixin.net.cn/Font-awesome字体图标http://fontawesome.io/material-design-iconic-font字体图标https://github.com/zavol…...

wordpress用户系统/国外黄冈网站推广软件

本节书摘来自华章出版社《Core Data应用开发实践指南》一书中的第3章&#xff0c;第3.4节&#xff0c;作者 &#xff08;美&#xff09;Tim Roadley&#xff0c;更多章节内容可以访问云栖社区“华章计算机”公众号查看 3.4 默认的迁移方式 有时候我们需要比轻量级迁移更为精细…...

zblog做企业网站/自己怎么注册网站

U-Boot&#xff0c;全称 Universal Boot Loader&#xff0c;是遵循GPL条款的开放源码项目。U-Boot的作用是系统引导。 U-Boot从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似&#xff0c;事实上&#xff0c;不少U-Boot源码就是根据相应的…...

营销类网站 英文/自己怎么做引流推广

壹、创建Object实例&#xff1a; 一&#xff1a; var person new Object(); person.name " 小明 " ; person.age 23; 二&#xff1a;对象字面量表示法&#xff1a; 在通过对象字面量定义对象时&#xff0c;实际上不会调用Object构造函数 var person { name: &quo…...

帮别人做彩票网站犯法嘛/seo外包是什么

Port Knocking for Ubuntu 14.04 Server OS:ubuntu 14.04 server 原理简单分析&#xff1a; 端口敲门服务&#xff0c;即&#xff1a;knockd服务。该服务通过动态的添加iptables规则来隐藏系统开启的服务&#xff0c;使用自定义的一系列序列号来“敲门”&#xff0c;使系统开启…...

网站开发前台开发/小程序拉新推广平台

项目介绍 随着人们生活水平的逐步提高&#xff0c;旅游成了大家必不可少放松项目&#xff0c;每当笔者走到一个美丽的景点&#xff0c;就会忍不住拿起数码相机照上几张留做回忆。虽然照片最后会存入到自己的电脑里&#xff0c;但是时间一长、照片一多&#xff0c;这些有着勾起…...