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

运行上面代码

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

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

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

相关文章

【论文阅读】-- Temporal Summary Images:通过交互式注释生成和放置实现叙事可视化的方法

Temporal Summary Images: An Approach to Narrative Visualization via Interactive Annotation Generation and Placement 摘要1 引言2 背景及相关工作2.1 叙事可视化和讲故事2.2 显示面向时间的数据2.3 小倍数和漫画2.4 注释可视化 3 设计要求和工作流程3.1 工作流程3.2 TSI…

基线核查--渗透

基线检查 基线核查概念 it中定义&#xff1a; 基线为初始的标准&#xff0c;以后更改就要经过授权&#xff0c;形成下一基线。 软件配置管理的基线&#xff1a;1功能基线&#xff0c;分配基线&#xff0c;产品基线 安全配置基线--基线核查 安全基线可以说是木桶理论&…

【python】eval函数

1.eval函数的语法及用法 &#xff08;1&#xff09;语法&#xff1a;eval(expression) 参数说明&#xff1a; expression&#xff1a;必须为字符串表达式&#xff0c;可为算法&#xff0c;也可为input函数等。 说明&#xff1a;表达式必需是字符串&#xff0c;否则会报错&a…

Vue3-尚硅谷笔记

1. Vue3简介 2020年9月18日&#xff0c;Vue.js发布版3.0版本&#xff0c;代号&#xff1a;One Piece&#xff08;n 经历了&#xff1a;4800次提交、40个RFC、600次PR、300贡献者 官方发版地址&#xff1a;Release v3.0.0 One Piece vuejs/core 截止2023年10月&#xff0c;最…

Dubbo运行原理

目录 Dubbo通讯协议 Dubbo负载均衡策略 RPC和HTTP有什么区别&#xff1f; 让你设计一个RPC框架&#xff0c;如何考虑数据序列化问题&#xff1f; Dubbo 是一款高性能、轻量级的开源 RPC&#xff08;远程过程调用&#xff09;框架&#xff0c;主要用于构建分布式服务和微服务…

springcloud第4季 springcloud-alibaba之openfegin+sentinel整合案例

一 介绍说明 1.1 说明 1.1.1 消费者8081 1.1.2 openfegin接口 1.1.3 提供者9091 9091微服务满足&#xff1a; 1 openfegin 配置fallback逻辑&#xff0c;作为统一fallback服务降级处理。 2.sentinel访问触发了自定义的限流配置&#xff0c;在注解sentinelResource里面配置…

基于SpringBoot的学生综合测评系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot框架 工具&#xff1a;MyEclipse、Tomcat 系统展示 首页 系统首页&#xff0c;提供综合…

After Effects 2024 mac/win版:创意视效,梦想起航

After Effects 2024是一款引领视效革命的专业软件&#xff0c;汇聚了创意与技术的精华。作为Adobe推出的全新版本&#xff0c;它以其强大的视频处理和动画创作能力&#xff0c;成为从事设计和视频特技的机构&#xff0c;如电视台、动画制作公司、个人后期制作工作室以及多媒体工…

求职产品运营的个人简历案例(精选篇)

在求职产品运营的道路上&#xff0c;一份出色的个人简历是迈向成功的第一步&#xff0c;但是简历怎么写才最好呢&#xff1f;下面是小编整理的求职产品运营的个人简历案例&#xff0c;同时&#xff0c;幻主简历网还提供精美简历模板下载和简历在线制作工具&#xff0c;欢迎大家…

meizu M10 魅蓝 10 mblu10 root 解锁 安装LSPosed框架 紫光展锐改串 AT命令 一键新机 改机软件 硬改 改参数

meizu M10 魅蓝 10 mblu10 root 解锁 安装LSPosed框架 紫光展锐改串 AT命令 一键新机 改机软件 硬改 改参数 ro.system.build.version.release11 ro.system.build.version.release_or_codename11 ro.system.build.version.sdk30 ro.system.custom.versionAndroid_M01 ro.prod…

python目录树生成器

代码如下&#xff1a; import os from colorama import Fore, Style, init from tkinter import Tk, Label, Entry, Button, Text, Scrollbar, RIGHT, Y, END# 初始化 colorama init(autoresetTrue)def print_directory_tree(root_dir, text_widget, indent, lastTrue):"…

NISP国家信息安全水平考试

国家信息安全水平考试(NISP)是中国信息安全测评中心考试、发证&#xff0c;由国家网络空间安全人才培养基地运营管理&#xff0c;并授权网安世纪科技有限公司为NISP证书管理中心。 中国信息安全测评中心开展国家信息安全水平考试(NISP)考试项目&#xff0c;是为普及信息安全/网…

Spring Boot如何实现跨域资源共享(CORS)?

&#x1f345; 作者简介&#xff1a;哪吒&#xff0c;CSDN2021博客之星亚军&#x1f3c6;、新星计划导师✌、博客专家&#x1f4aa; &#x1f345; 哪吒多年工作总结&#xff1a;Java学习路线总结&#xff0c;搬砖工逆袭Java架构师 &#x1f345; 技术交流&#xff1a;定期更新…

1.k8s:架构,组件,基础概念

目录 一、k8s了解 1.什么是k8s 2.为什么要k8s &#xff08;1&#xff09;部署方式演变 &#xff08;2&#xff09;k8s作用 &#xff08;3&#xff09;Mesos&#xff0c;Swarm&#xff0c;K8S三大平台对比 二、k8s架构、组件 1.k8s架构 2.k8s基础组件 3.k8s附加组件 …

【STM32-存储器映射】

STM32-存储器映射 ■ STM32F1-4G地址空间分成8个块■ STM32F1-Block0■ STM32F1-Block1■ STM32F1-Block2■ STM32F1- ■ STM32F1-4G地址空间分成8个块 ■ STM32F1-Block0 有出厂 BootLoader 就可以使用串口下载程序。如Keil5图中IROM地址是0x8000000 开始 就是flash地址 ■ S…

使用方法——注意事项及好处

public class MethodDemo01 {public static void main(String[] args) {// 目标&#xff1a;掌握定义方法的完整性&#xff0c;清楚使用方法的好处。// 需求&#xff1a;假如现在有很多程序员都要进行2个整数求和的操作。//1、李工。int rs sun(10,20);System.out.println(&q…

[vscode] 自定义log快捷生成代码

1、进入设置页面&#xff1a;文件>首选项>用户代码片段>选择设置的语言。 2. 关于代码段显示位置的调整设置 文件>首选项>设置&#xff0c;搜索代码段或snippetSuggestions&#xff0c;修改为”top”; 参考&#xff1a; vscode自定义log快捷生成代码

直流电机双闭环调速Simulink仿真

直流电机参数&#xff1a; 仿真模型算法介绍&#xff1a; 1&#xff09;三相整流桥&#xff0c;采用半控功率器件SCR晶闸管&#xff1b; 2&#xff09;采用转速环、电流环 双闭环控制算法&#xff1b; 3&#xff09;外环-转速环&#xff0c;采用PI 比例积分控制&#xff1b;…

Java进阶-Lambda

Java进阶-Lambda 前言Lambda表达式什么是Lambda表达式初识Lambda表达式Lambda表达式的简单使用Lambda表达式格式分析与传统接口方法实现的比较 理解Lambda表达式函数式编程非纯函数实例纯函数示例函数式编程在Lambda表达式中的体现 闭包闭包与Lambda表达式的示例 类型推导-匿名…

633. 平方数之和(中等)

633. 平方数之和 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java内存溢出溢出代码正确代码与截图 1. 题目描述 题目中转&#xff1a;633. 平方数之和 2.详细题解 本题是167. 两数之和 II - 输入有序数组&#xff08;中等&#xff09;题目的变型&#xff0c;由两数之和变…