当前位置: 首页 > 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]))…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

论文阅读:Matting by Generation

今天介绍一篇关于 matting 抠图的文章&#xff0c;抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法&#xff0c;已经有很多的工作和这个任务相关。这两年 diffusion 模型很火&#xff0c;大家又开始用 diffusion 模型做各种 CV 任务了&am…...