C++的流提取(>>)(输入) 流插入(<<)(输出)

什么是输入和输出流

流提取(<<)(输入)

  • 理解:我们可以理解为,输入到io流里面,比如是cin,然后从输入流中读取数据

流插入(<<)(输出)

  • 理解:我们可以理解把数据插入到io流里面,比如是cout,然后通过这个流将数据输出到屏幕或其他输出设备。

C++输入流和输出流的优点

  1. 类型安全C++的I/O流机制可以自动识别变量类型(不需要写整形,字节这样的类型),从而提供类型安全。这意味着编译器会在编译时检查类型不匹配错误,而C语言中的 printfscanf 系列函数在运行时才检查类型,容易导致运行时错误。

  2. 可读性:C++的流式I/O操作符 <<>> 提供了直观的语法,使得代码易于阅读和编写。与C语言的格式化字符串相比,C++的I/O操作符更易于理解。

  3. 易于使用C++的I/O机制使用起来更简单,不需要记住复杂的格式化字符串。对于基本数据类型,直接使用 <<>> 即可完成输入输出。

  4. 扩展性C++的I/O流库可以很容易地扩展以支持自定义类型的输入输出(自定义类型,使用这个比较方便)。通过运算符重载,可以为自定义类型定义 <<>> 运算符,从而实现自定义类型的输入输出。

  5. 面向对象:C++的I/O流库是基于面向对象设计的,std::istreamstd::ostream 是从这些类派生的。这种设计使得I/O操作可以与面向对象的程序设计方法无缝集成。

  6. 本地化支持:C++的I/O流库支持本地化

  7. 异常处理:C++的I/O操作可以抛出异常,这使得错误处理更加灵活和强大。而C语言的I/O操作通常只是返回一个错误码。

  8. 缓冲管理C++的I/O流库自动管理缓冲区,开发者不需要手动刷新缓冲区。例如,std::endl 不仅插入一个换行符,还刷新了输出缓冲区,而C语言中的 \n 仅插入换行符。

注意事项

  • 一般情况下我们可以 using namespace std,实际项目开发中不建议 using namespace std,因为可能导致冲突
  • 这里我们没有包含 <stdio.h>,也可以使用 printf 和 scanf,在包含 <iostream> 后间接包含了。VS 系列编译器是这样的,其他编译器可能会报错。

C++输入流和输出流的使用

流提取(<<)(输入)

  • 操作:使用 >> 操作符,你可以从 std::cin 中读取不同类型的数据,如整数、浮点数、字符、字符串等。
  • 理解:我们可以理解为,输入到io流里面,比如是cin,然后从输入流中读取数据
  • 例子
#include<iostream>//头文件
int number;
std::cin >> number; // 从标准输入读取一个整数

流插入(<<)(输出)

  • 操作:使用 << 操作符,你可以向 std::cout 中写入数据,如文本、变量的值等。
  • 理解:我们可以理解把数据插入到io流里面,比如是cout,然后通过这个流将数据输出到屏幕或其他输出设备。
  • 例子
#include<iostream>//头文件
int number = 42;
std::cout << number << std::endl; // 向标准输出写入一个整数和一个换行符

std::endl

std::endl 是一个操纵符,用于向输出流中插入一个换行符,并刷新输出流。它通常与流插入操作符 << 一起使用。

  • 操作:当你向 std::cout 使用 std::endl 时,它会输出一个换行符,并将输出流缓冲区的内容刷新到标准输出设备。
std::cout << "Hello, World!" << std::endl; // 输出文本并换行

关系

  • std::cin 使用流提取操作符 >> 来从输入流中读取数据。
  • std::cout 使用流插入操作符 << 来向输出流中写入数据。
  • std::endl 通常与 std::cout 一起使用,用于在输出后添加换行并刷新输出流。

命名空间的展开( using namespace std

在C++中,命名空间(namespace)是一种封装全局标识符(如变量名、函数名、类名等)的方式,以防止不同代码库中的同名标识符发生冲突。std 是C++标准库的命名空间,它包含了标准库中的所有实体。(简单说就是,std::coutstd::cinstd::endl 都是 std 命名空间中定义的,你不想去域里面访问,直接取消就可以)

代码

//代码不展开
#include<iostream>//头文件
int main()
{
    //代码不展开
    std::cout << "why" << std::endl;//打印出来why
	return 0;
}




//代码展开
#include<iostream>//头文件
using namespace std;//取消空间的折叠
int main()
{
    cout << "why" << endl;//打印出来why
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络协议头分析

目录 数据的传输与封装过程 以太网完整帧 以太网头部 IP头 TCP头 数据的传输与封装过程 以太网完整帧 ● 对于网络层最大数据帧长度是1500字节 ● 对于链路层最大数据长度是1518字节&#xff08;150014CRC&#xff09;● 发送时候&#xff0c;IP层协议栈程序检测到发送数…

前端 + 接口请求实现 vue 动态路由

前端 接口请求实现 vue 动态路由 在 Vue 应用中&#xff0c;通过前端结合后端接口请求来实现动态路由是一种常见且有效的权限控制方案。这种方法允许前端根据用户的角色和权限&#xff0c;动态生成和加载路由&#xff0c;而不是在应用启动时就固定所有的路由配置。 实现原理…

路由器的固定ip地址是啥意思?固定ip地址有什么好处

‌在当今数字化时代&#xff0c;‌路由器作为连接互联网的重要设备&#xff0c;‌扮演着举足轻重的角色。‌其中&#xff0c;‌路由器的固定IP地址是一个常被提及但可能让人困惑的概念。‌下面跟着虎观代理小二一起将深入探讨路由器的固定IP地址的含义&#xff0c;‌揭示其背后…

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:下(人物动画)

上个博客我们做出了人物的动画机和人物移动跳跃&#xff0c;接下来我们要做出人物展现出来的动画了 我们接下来就要用到动画机了&#xff0c;双击我们的动画机&#xff0c;进入到这样的页面&#xff0c;我这是已经做好的页面&#xff0c;你们是没有这些箭头的 依次像我一样连接…

【Python】Windows下python的下载安装及使用

文章目录 下载安装检测 使用环境搭建下载PycharmPycharm安装 下载 进入官网下载&#xff1a;https://www.python.org/ 点击下载 64位电脑下载该项 安装 勾选 添加至环境变量 使用自定义安装 检测 安装成功后&#xff0c;打开命令提示符窗口&#xff08;winR,输入cmd回车…

红海云 × 紫光同芯 | 数字化驱动芯片领军企业人力资源管理新升级

紫光同芯微电子有限公司&#xff08;以下简称“紫光同芯”&#xff09;是新紫光集团汽车电子与智能芯片板块的核心企业。专注于汽车电子与安全芯片领域&#xff0c;累计出货超过230亿颗&#xff0c;为亚洲、欧洲、美洲、非洲的二十多个国家和地区提供产品和服务。 为进一步提升…

VSC++: 十转十六进制

void 十转十六进制(int 数) {//缘由https://ask.csdn.net/questions/1089023string 十六模 "0123456789ABCDEF", 进制 "";int j 0;cout << 数 << ends; if (!数)cout << "0";while (数)进制.push_back(十六模[数 % 16]), j…

LCS—最长公共子序列

最长公共子序列问题就是求出两个字符串的LCS长度&#xff0c;是一道非常经典的面试题目&#xff0c;因为它的解法是典型的二维动态规划。 比如输入 str1 "babcde", str2 "acbe"&#xff0c;算法应该输出3&#xff0c;因为 str1 和 str2 的最长公共子序列…

【大模型基础】P2 Bag-of-Words

目录 词袋模型 概述词袋模型 实例第1步 构建语料库第2步 对句子进行分词第3步 创建词汇表第4步 转换词袋表示第5步 计算余弦相似度 词袋模型的局限性 词袋模型 概述 词袋模型&#xff0c;Bag-of-Words&#xff0c;是一种简单的文本表示方法&#xff0c;也是 NLP 中的一个经典模…

[数据集][目标检测]血细胞检测数据集VOC+YOLO格式2757张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2757 标注数量(xml文件个数)&#xff1a;2757 标注数量(txt文件个数)&#xff1a;2757 标注…

因MathType导致word复制粘贴失败,显示:运行时错误‘53’

问题&#xff1a;运行时错误‘53’&#xff1a;文件未找到&#xff1a;MathPage.WLL 解决方法&#xff1a;打开MathType所在文件夹 右击MathType图标->点击“打开文件所在位置”->找到MathPage.WLL文件。 然后&#xff0c;把这个文件复制到该目录下&#xff1a;C:\Progr…

jenkins工具的介绍和gitlab安装

使用方式 替代手动&#xff0c;自动化拉取、集成、构建、测试&#xff1b;是CI/CD持续集成、持续部署主流开发模式中重要工具&#xff1b;必须组件 jenkins-gitlab&#xff0c;代码公共仓库服务器&#xff08;至少6G内存&#xff09;&#xff1b;jenkins-server&#xff0c;需…

论文解读:利用大模型进行基于上下文的OCR校正

论文地址&#xff1a;https://arxiv.org/pdf/2408.17428 背景概述 研究问题&#xff1a;这篇文章要解决的问题是如何利用预训练的语言模型&#xff08;LMs&#xff09;来改进光学字符识别&#xff08;OCR&#xff09;的质量&#xff0c;特别是针对报纸和期刊等复杂布局的文档。…

Jmeter_循环获取请求接口的字段,并写入文件

通过JSON提取器、计数器、beanshell&#xff0c;循环读取邮箱接口的返回字段&#xff0c;筛选出flag为3的收件人&#xff0c;并写入csv文件。 1、调用接口&#xff0c;获取所有的邮件$.data.total.count&#xff1b; 2、beanshell后置处理total转换成页码&#xff0c;这里是227…

纵切车床和走心机的区别

纵切车床和走心机在机床加工领域中各自扮演着重要的角色&#xff0c;它们在多个方面存在显著的差异。下面&#xff0c;我将从基本概念、工作原理、应用领域以及加工能力等方面来详细阐述这两者的区别。 一.基本概念 ‌纵切车床‌&#xff1a;纵切车床&#xff0c;也被称为自动纵…

NFTScan | 09.02~09.08 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期&#xff1a;2024.09.02~ 2024.09.08 NFT Hot News 01/ 数据&#xff1a;NFT 8 月销售额跌破 4 亿美元&#xff0c;创年内新低 9 月 2 日&#xff0c;数据显示&#xff0c;8 月 NFT 的月销售额仅为 …

ozon免费选品工具,OZON免费选品神器

在跨境电商的浩瀚海洋中&#xff0c;寻找那片属于自己的盈利蓝海&#xff0c;是每个商家梦寐以求的目标。随着俄罗斯电商市场的迅速崛起&#xff0c;Ozon平台以其庞大的用户基数和不断增长的市场份额&#xff0c;成为了众多跨境卖家眼中的“香饽饽”。然而&#xff0c;面对琳琅…

vue-router + el-menu

1. el-menu的router属性 在el-menu中有一属性&#xff1a;router&#xff0c;默认是false 1.1 使用默认配置&#xff0c;即false 这时候需要自己在点击子菜单的时候进行导航&#xff0c;在el-menu添加方法&#xff0c;里边有三个参数 index: 选中菜单项的 index,indexPath…

jmeter之ForEach控制器使用

ForEach控制器作用&#xff1a; 一般和用户自定义变量或者正则表达式提取器配合使用&#xff0c;读取返回结果中一系列相关的变量值&#xff0c;该控制器下的取样器都会被执行一次或多次&#xff0c;每次读取不同的变量值(类似python当中的for语句,用来遍历操作) 本节代码已上…

uniapp数据缓存和发起网络请求

数据缓存 uni.onStorageSync同步的方式将数据存储到本地缓存 <template><button click"onStorageSync()">存储数据</button> </template><script setup>const onStorageSync () > {// 存储数据uni.setStorageSync(username, 张三)…