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

news2024/9/21 3:18:27

个人主页:Jason_from_China-CSDN博客

所属栏目:C++系统性学习_Jason_from_China的博客-CSDN博客

什么是输入和输出流

流提取(<<)(输入)

  • 理解:我们可以理解为,输入到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.coloradmin.cn/o/2130644.html

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

相关文章

数据结构基础详解(C语言): 栈的括号匹配(实战)与栈的表达式求值特殊矩阵的压缩存储

文章目录 栈的应用1.栈的括号匹配代码实战:问题分析:2.栈的表达式求值2.1 中缀、后缀、前缀表达式2.2 中缀表达式改写为后缀表达式(手算)2.3 后缀表达式的计算(手算)2.4 中缀表达式转前缀表达式&#xff08;手算)和计算前缀表达式2.5后缀表达式的计算(机算)2.6 中缀表达式转后缀…

win10+eclipse+ESP8266_RTOS_SDK开发环境构建

官网教程 https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/get-started/eclipse-setup.html 1. 导入工程 Build and Flash with Eclipse IDE — ESP8266 RTOS SDK Programming Guide documentation (espressif.com) 导入整个SDK&#xff0c;便于查看所有代…

网络安全 day6 --- 抓包技术HTTPS协议小程序PC应用WEB转发联动

免责声明 本免责声明适用于作者所有文章内容。使用者需明确&#xff0c;网络安全技术仅供学习和合法研究使用&#xff0c;不得用于任何非法活动&#xff0c;如未经授权的入侵、攻击或数据窃取&#xff0c;所有相关法律责任由使用者自行承担。由于网络安全操作可能带来系统崩溃、…

智慧工地数据集-可移动生产要素检测与分割

智慧工地数据集&#xff0c;可移动生产要素检测与分割数据集篇&#xff0c;超高清数据&#xff0c;拍摄于武汉火神山&#xff0c;雷神山医院。包含13种工地中主要移动目标&#xff0c;Bulldozer - 推土机 Concrete mixer - 混凝土搅拌机 Crane - 起重机 Excavator - 挖掘机 Han…

jsp+servlet+mysql机票订票管理系统

jspsevletmysql机票订票管理系统 一、系统介绍二、功能展示1.机票查询2.选择航班3.填写乘客信息4.提交定单 四、其它1.其他系统实现 一、系统介绍 系统主要功能&#xff1a; 机票查询 1.航行类型 2.出发城市 3.到达城市 4.出发日期 5.返回日期 选择航班 1.航班信息 2.起飞时间…

瑞芯微rv1126 Linux 系统,修改系统时区,包有效方法

在 Linux 系统中,修改时区的步骤通常包括创建符号链接到正确的时区文件,并确保相关的配置文件已正确更新。然而,某些系统可能有额外的步骤或需要修改其他配置文件来使更改生效。以下是一些步骤。 1. 创建符号链接 ln -sf /usr/share/zoneinfo/Asia/Hong_Kong /etc/localti…

GitLab邮箱发送邮件:如何实现自动化发信?

gitlab邮箱发送邮件设置教程&#xff1f;Gitlab邮箱配置和使用&#xff1f; GitLab不仅提供了代码版本控制、持续集成/持续部署等功能&#xff0c;还支持通过其内置的邮件功能实现自动化邮件发送。AokSend将深入探讨如何在GitLab中配置和使用邮箱发送邮件功能。 GitLab邮箱发…

如何在 Selenium 中获取网络调用请求?

引言 捕获网络请求对于理解网站的工作方式以及传输的数据至关重要。Selenium 作为一种 Web 自动化工具,可以用于捕获网络请求。本文将讨论如何使用 Selenium 在 Java 中捕获网络请求并从网站检索数据。 我们可以使用浏览器开发者工具轻松捕获网络请求或日志。大多数现代 Web…

react18基础教程系列--安装环境及packagejson文件分析

一个React项目中&#xff0c;默认会安装: react:React框架的核心react-dom:React 视图渲染的核心「基于React构建WebApp(HTML页面)J—>react-native:构建和渲染App的react-scripts: 脚手架为了让项目目录看起来干净一些&#xff0c;把webpack打包的规则及相关的插件/LOADER…

一、链表-算法总结

文章目录 一、链表1.1 提纲1.2 链表删除1.2.1 删除排序链表中的重复元素&#xff08;仅保留一个重复元素&#xff09;1.2.2 删除排序链表中的重复元素 II &#xff08;删除所有重复的元素&#xff09; 1.3 链表反转1.3.1 反转链表1.3.2 反转链表 1.4 合并链表1.4.1 合并两个有序…

图新地球-将地图上大量的地标点批量输出坐标到csv文件【kml转excel】

0.序 有很多用户需要在卫星影像、或者无人机航测影像、倾斜模型上去标记一些地物的位置&#xff08;如电线杆塔、重点单位、下水盖等&#xff09; 标记的位置最终又需要提交坐标文本文件给上级单位或者其他部门使用&#xff0c;甚至需要转为平面直角坐标。 本文的重点是通过of…

第 1 0 章OpenCV

本章概述如何通过 Python 接口使用流行的计算机视觉库 OpenCV。OpenCV 是一个C 库&#xff0c;用于&#xff08;实时&#xff09;处理计算视觉问题。实时处理计算机视觉的 C 库&#xff0c;最初由英特尔公司开发&#xff0c;现由 Willow Garage 维护。OpenCV 是在 BSD 许可下发…

基于深度学习的医学图像分类与诊断系统(开题报告免费领)

深度学习开始大放异彩的工作&#xff0c;莫过于在ImageNet数据集上&#xff0c;对输入图片的分类了。只要输入图片&#xff0c;就能判断图片中主体所属的类别。然而&#xff0c;和分类问题输入图像输出主体的类别不一样&#xff0c;分割问题需要对每个像素点的类别进行识别。下…

Unity实现自己的协程系统(协程有顺序)

你的类可以在不继承Mono的脚本使用协程,但本质仍然需要借助其他Mono对象的Update来调度 实现了一个有执行顺序的协程的调度器&#xff0c;用于在 Unity 中管理多个协程的执行。通过 ICoroutineNodeOrder 和 ICoroutineWaitCondition 两个接口&#xff0c;可以定义每个协程的执行…

labview禁用8080端口

需求背景 最近电脑上安装了labview全家桶,发现idea的8080端口项目启动报错,一直提示8080端口被占用。最简单的办法就是找到8080端口的服务,然后关闭这个服务。但是我不想这么做,我想把labview的web服务器的端口给修改了。 操作教程 1、cmd查看8080端口 2、windows进程 同…

ICM20948 DMP代码详解(17)

接前一篇文章&#xff1a;ICM20948 DMP代码详解&#xff08;16&#xff09; 前一篇文章讲到了inv_icm20948_set_chip_power_state函数中尚需解析的3个函数中的第1个函数&#xff1a;inv_icm20948_write_single_mems_reg_core。并没有完全讲完&#xff0c;本回继续解析。为了便于…

搭建本地DVWA靶场教程 及 靶场使用示例

1. DVWA简介 DVWA&#xff08;Damn Vulnerable Web Application&#xff09;一个用来进行安全脆弱性鉴定的PHP/MySQL Web 应用平台&#xff0c;旨在为网络安全专业人员测试自己的专业技能和工具提供合法的环境&#xff0c;帮助web开发者更好的理解web应用安全防范的过程。 DVW…

利用MR设备实现弹吉他教学:实战案例详解

随着混合现实(Mixed Reality, MR)技术的发展,越来越多的应用开始探索如何将这种沉浸式的体验融入到教育与娱乐中。特别是在音乐教育领域,MR技术为乐器学习提供了全新的可能性。本文将通过分析一个基于Unity开发的吉他教学应用案例,探讨如何利用MR设备,如Oculus Quest或Ap…

Boot中使用Redis缓存

除了RedisTemplate,Spring Cache 还有如下方式 即使不写Repository也可以自动注入 只要extends CrudRepository 最好不要写Repository有可能冲突 自动注入用Autowired或Resource都可

Chainlit集成Langchain并使用通义千问实现和数据库交互的网页对话应用增强扩展(text2sql)

前言 我在上一篇文章中《Chainlit集成Langchain并使用通义千问实现和数据库交互的网页对话应用&#xff08;text2sql&#xff09;》 利用langchain 中create_sql_agent 创建一个数据库代理智能体&#xff0c;但是实测中发现&#xff0c;使用 create_sql_agent 在对话中&#x…