C++初学者指南-2.输入和输出---流输入和输出

C++初学者指南-2.输入和输出—流输入和输出

文章目录

  • C++初学者指南-2.输入和输出---流输入和输出
    • 1.定制输入/输出
      • 1.1 示例:点坐标输入/输出
      • 1.2 流操作符
      • 1.3(一部分)标准库流类型
    • 2. 工具
      • 2.1 用getline读取行
    • 2.2 用ignore进行跳转
    • 2.3 格式化操作

1.定制输入/输出

1.1 示例:点坐标输入/输出

通过使用名称为 operator<< 和 operator>> 的两个函数重载。

struct point { int x;  int y; };

std::ostream& operator << (std::ostream& os, point const& p) {
  return os << '(' << p.x << ',' << p.y << ')';
}

std::istream& operator >> (std::istream& is, point& p) {
  return is >> p.x >> p.y;
}
point p {1,2};
cout << p << '\n';   // 打印 (1,2)
…
cin >> p;  // 读取2哥整形值到p.x和p.y

1.2 流操作符

类型T的对象的流输入/输出操作函数:

std::ostream& operator << (std::ostream& os, T const& x) {
  // write to stream …
  return os;
}
std::istream& operator >> (std::istream& is, T& x) {
  // read from stream …
  return is;
}

操作符<<和>>返回一个引用(指向它们的stream参数),以允许操作符连缀:

cin  >> x >> y;  ⇔  operator>>( operator>>(cin, x), y)
cout << x << y;  ⇔  operator<<( operator<<(cout,x), y)

标准库中针对像 std::vector 这样的容器的默认流操作是不存在的,因为存在太多可能的用例:

  • 只是打印值… 用什么分隔?
  • 将输出格式化为纯文本 / XML / …
  • (反)序列化容器

1.3(一部分)标准库流类型

istream输入流istream&引用可以绑定到任何其他类型的std:: 输入流
ostream输出流ostream&引用可以绑定到任何其他类型的std:: 输出流
ifstream文件输入流提取的数据是从文件中读取的
ofstream文件输出流插入的数据存储在一个文件中
ostringstream字符串输出流插入的数据存储在字符串缓冲区中
istringstream字符串输入流提取数据是从字符串缓冲区中读取的

2. 工具

2.1 用getline读取行

std::getline (istream&, string&, stopat='\n')

读取直到下一个停止符号(默认为直到行尾)

string s;
getline(cin, s);           //读取一整行
getline(cin, s, '\t');     //读取直到遇到制表符
getline(cin, s, 'a');     //读取直到遇到字符'a'

2.2 用ignore进行跳转

std::istream::ignore(n, c)
  • 向前移动 n 个字符
  • 直到停止字符 c
// 跳过8个字符
cin.ignore(8);
// 跳过最多10个字符或者遇到'='
cin.ignore(10, '=');
// 跳过所有字符直到遇到换行符'\n'
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

2.3 格式化操作

#include <iomanip>                 // 头文件
double d = 12.345678;              
double e = 2011;
double f = 1e-10;
std::cout << d                     // 12.345678 
<< e << '\n'                       // 2011
<< f << '\n'                       // 1e-010
<< std::setprecision(4)            // 设置输出几个数字(包含整数)
<< d << '\n'                       // 12.35
<< e << '\n'                       // 2011
<< f << '\n'                       // 1e-010
<< std::fixed                      // 用定点表示法表示浮点数,这是签名设置的数字4变成了小数点后的位数
<< d << '\n'                       // 12.3457
<< e << '\n'                       // 2011.000 
<< f << '\n'                       // 1.0000-e010
<< std::scientific                 //用科学计数法表示
<< d << '\n'                       //1.2346e+001
<< e << '\n'                       //2.0110e+003
<< f << '\n'                       //1.0000e-010
<< true <<' '<< false              //1 0
<< std::boolalpha                  //用字符串表示布尔值
<< true <<'  '<< false;             //true false

运行上面代码

附上原文地址
如果文章对您有用,请随手点个赞,谢谢!^_^
在这里插入图片描述

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

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

相关文章

武汉星起航:全球化舞台,中国跨境电商品牌力与竞争力双提升

随着全球化步伐的加快和数字技术的迅猛发展&#xff0c;跨境出口电商模式已经成为中国企业海外拓展的重要战略选择。这一模式不仅为中国的中小型企业提供了进军全球市场的机会&#xff0c;更为它们在全球舞台上展示独特的竞争优势提供了强有力的支撑。武汉星起航将从市场拓宽、…

STL迭代器的基础应用

STL迭代器的应用 迭代器的定义方法&#xff1a; 类型作用定义方式正向迭代器正序遍历STL容器容器类名::iterator 迭代器名常量正向迭代器以只读方式正序遍历STL容器容器类名::const_iterator 迭代器名反向迭代器逆序遍历STL容器容器类名::reverse_iterator 迭代器名常量反向迭…

问界M9累计大定破10万,创中国豪车新纪录

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 6月26日消息&#xff0c;华为常务董事、终端BG董事长、智能汽车解决方案BU董事长余承东今日宣布&#xff0c;问界M9上市6个月&#xff0c;累计大定突破10万辆。 这一成绩&#xff0c;也创造了中国市场…

5款名不见经传的小众软件,简单好用

​ 我们在使用一些流行的软件的时候&#xff0c;往往会忽略一些知名度不高但是功能非常强大的软件&#xff0c;有的是因为小众&#xff0c;有的是因为名不见经传&#xff0c;总之因为不出名&#xff0c;有许多的好用的软件都不为大众所知道。 1.桌面美化——Win10 Widgets ​…

为什么需要对数据质量问题进行根因分析?根因分析该怎么做?

在当今的商业环境中&#xff0c;数据已成为企业决策的核心。然而&#xff0c;数据的价值高度依赖于其质量。低质量的数据不仅会降低分析的准确性&#xff0c;还可能导致错误的决策&#xff0c;从而影响企业的竞争力和市场表现。因此&#xff0c;识别和解决数据质量问题是数据管…

c#关键字 ArgumentOutOfRangeException .? IEnumerable string.Join

c# ArgumentOutOfRangeException ArgumentOutOfRangeException 是 C# 中表示某个参数值超出了方法或属性定义的有效范围时引发的一个异常。这个异常通常在尝试访问数组、集合、字符串等的无效索引&#xff0c;或者当传递给方法或属性的参数不在其有效范围内时发生。 例如&…

浅学JVM

一、基本概念 目录 一、基本概念 二、JVM 运行时内存 1、新生代 1.1 Eden 区 1.2. ServivorFrom 1.3. ServivorTo 1.4 MinorGC 的过程 &#xff08;复制- >清空- >互换&#xff09; 1.4.1&#xff1a;eden 、servicorFrom 复制到ServicorTo&#xff0c;年龄1 …

K8S集群进行分布式负载测试

使用K8S集群执行分布式负载测试 本教程介绍如何使用Kubernetes部署分布式负载测试框架&#xff0c;该框架使用分布式部署的locust 产生压测流量&#xff0c;对一个部署到 K8S集群的 Web 应用执行负载测试&#xff0c;该 Web 应用公开了 REST 格式的端点&#xff0c;以响应传入…

C++用Crow实现一个简单的Web程序,实现动态页面,向页面中输入数据并展示

Crow是一个轻量级、快速的C微框架&#xff0c;用于构建Web应用程序和RESTful API。 将处理前端页面的POST请求以添加数据的逻辑添加到 /submit 路由中&#xff0c;并添加了一个新的路由 / 用于返回包含输入框、按钮和表格的完整页面。当用户向表格添加数据时&#xff0c;JavaS…

创新与责任并重!中国星坤连接器的可持续发展战略!

在当今全球化的商业环境中&#xff0c;企业的社会责任、技术创新和产品质量是企业可持续发展的三大支柱。中国星坤正是这样一家企业&#xff0c;它在电子连接技术领域以其卓越的技术创新、坚定的环保责任和严格的生产品控而著称。本文将深入探讨星坤科技如何通过其FAE技术团队的…

浏览器扩展V3开发系列之 chrome.contextMenus 右键菜单的用法和案例

【作者主页】&#xff1a;小鱼神1024 【擅长领域】&#xff1a;JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等 chrome.contextMenus 允许开发者向浏览器的右键菜单添加自定义项。 在使用 chrome.contextMenus 之前…

CMN-700(1)CMN-700概述

本章介绍CMN-700&#xff0c;这是用于AMBA5 CHI互连&#xff0c;且可根据需要定制的网格拓扑结构。 1. 关于CMN‐700 CMN‐700是一种可配置扩展的一致性互连网络&#xff0c;旨在满足高端网络和企业计算应用中使用的一致性网络系统的功率、性能和面积(PPA)要求。支持1-256个处…

ES6深潜指南:解锁JavaScript类与继承的高级技巧,让您的代码更加优雅

前言 随着前端技术的迅猛发展&#xff0c;JavaScript已经成为构建现代Web应用不可或缺的编程语言。ES6&#xff08;ECMAScript 2015&#xff09;引入了许多期待已久的特性&#xff0c;其中类&#xff08;Classes&#xff09;和继承机制的引入&#xff0c;极大地增强了JavaScrip…

gc.log中 CMS-concurrent-abortable-preclean

问题 在gc日志中看到 2024-06-26T16:16:07.5040800: 64690272.666: [CMS-concurrent-abortable-preclean-start]CMS: abort preclean due to time 2024-06-26T16:16:12.5530800: 64690277.716: [CMS-concurrent-abortable-preclean: 1.052/5.049 secs] [Times: user1.33 sys0…

Gradle学习-3 Gradle构建的生命周期

Gradle常用文件目录 Gradle 构建的生命周期&#xff0c;有3个阶段: 初始化阶段配置阶段执行阶段 1、初始化阶段 Gradle 支持构建单个工程个多个子工程&#xff0c;初始化阶段主要负责收集所有参与本次构建的子工程&#xff0c;创建一个项目的层次结构&#xff0c;并未每个…

喜报!极限科技新获得一项国家发明专利授权:“搜索数据库的正排索引处理方法、装置、介质和设备”

近日&#xff0c;极限数据&#xff08;北京&#xff09;科技有限公司&#xff08;简称&#xff1a;极限科技&#xff09;新获得一项国家发明专利授权&#xff0c;专利名为 “搜索数据库的正排索引处理方法、装置、介质和设备”&#xff0c;专利号&#xff1a;ZL 2024 1 0479400…

实用软件下载:BetterZip 5最新安装包及详细安装教程

​我们都知道BetterZip是Mac平台上非常受欢迎的文件“解/压缩”工具之一&#xff0c;并且能够生成被Win支持的压缩包。不同领域的应用证明了这是一款功能强大的 Mac 解压缩软件支持 RAR、ZIP等30 种档案格式&#xff0c;可创建小型应用软件。值得一提的是而且能够在不必解压的情…

【教学类-64-05】20240625彩棒鱼骨图(二)AB排列 6.5*1CM 6选2根 30种

背景需求&#xff1a; 【教学类-64-04】20240619彩棒鱼骨图&#xff08;一&#xff09;6.5*1CM 6根棒子720种-CSDN博客文章浏览阅读897次&#xff0c;点赞23次&#xff0c;收藏13次。【教学类-64-04】20240619彩棒鱼骨图&#xff08;一&#xff09;6.5*1CM 6根棒子720种https:…

WordPress强大多功能主题模板The7 v9.16.0

模板介绍 The7可以与WPBakery Page Builder&#xff08;原Visual Composer&#xff09;和Ultimate Addons的完全无缝集成。它也与大多数流行的插件完全兼容&#xff0c;例如WooCommerce&#xff0c;WPML&#xff0c;Yoast SEO&#xff0c;All in One WP Migration&#xff0c;…

视觉分割的定义与性能度量

文章目录 视觉分割的定义语义分割(Semantic Segmentation)实例分割(instance Segmentation)全景分割(Panoptic Segmentation)视频语义分割(Video Semantic Segmentation)视频实例分割(Video instance Segmentation)视频全景分割(Video Panoptic Segmentation)各任务对比 视觉分…