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

news2025/2/25 20:34:22

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.coloradmin.cn/o/1865986.html

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

相关文章

RT-Thread使用HAL库实现双线程控制LED交替闪烁

如何创建工程我的其他文中你面有可以进去查看 1创建线程&#xff08;以动态方式实现&#xff09; 1-2创建函数入口 1-2启动函数 main.c文件源码 /** Copyright (c) 2006-2024, RT-Thread Development Team** SPDX-License-Identifier: Apache-2.0** Change Logs:* Date …

udp udpClient 聊天室

简介 1、UDP&#xff08;User Data Protocol&#xff0c;用户数据报协议&#xff09; &#xff08;1&#xff09; UDP是一个非连接的协议&#xff0c;传输数据之前源端和终端不建立连接&#xff0c;当它想传送时就简单地去抓取来自应用程序的数据&#xff0c;并尽可能快地把它…

【笔记】备份VScode代码至GitHub

目录 不小心把代码删掉了&#xff0c;还没备份备份步骤创建新工作区和测试文件还有GitHub项目初始化git注意 最后一步 不小心把代码删掉了&#xff0c;还没备份 试着安装了一下GitHub Pull Requests&#xff0c;不会用 备份步骤 创建新工作区和测试文件还有GitHub项目 首先…

vscode 删除不用的ssh远程连接

使用vscode连接一个远程服务器发现联不通&#xff0c;但是使用mobaxterm是可以通的&#xff0c;最后原因发现是这个服务器ip与之前连过的另一台相同&#xff0c;和之前连接保存的信息冲突了 解决办法&#xff1a; 使用记事本打开这个路径下的known_hosts(最好备份一下)&#x…

Python代码打包成exe应用

目录 一、前期准备 二、Pyinstaller打包步骤 Pyinstaller参数详解 三、测试 Spec 文件相关命令 一、前期准备 &#xff08;1&#xff09;首先&#xff0c;我们需要确保你的代码可以在本地电脑上的pycharm正常运行成功。 &#xff08;2&#xff09;我们要先安装Pyinstalle…

第 5 章理解 ScrollView 并构建 Carousel UI

通过上一章的学习,我相信你现在应该明白如何使用堆栈构建复杂的 UI。当然,在你掌握 SwiftUI 之前,你还需要大量的练习。因此,在深入研究 ScrollView 以使视图可滚动之前,让我们先以一个挑战开始本章。你的任务是创建一个类似于图 1 所示的卡片视图。 …

HarmonyOS开发 - 日志打印

在程序开发过程中&#xff0c;日志输出是不可或缺的一部分。能有效的记录和分析日志数据&#xff0c;使开发人员可以更好地了解程序的运行状况、解决问题、优化性能并满足合规性要求等。 当程序出现错误或异常时&#xff0c;日志记录输出可以帮助开发人员快速定位问题发生的位置…

2024年最新通信安全员考试题库

61.架设架空光缆&#xff0c;可使用吊板作业的情况是&#xff08;&#xff09;。 A.在2.2/7规格的电杆与墙壁之间的吊线上&#xff0c;吊线高度5m B.在2.2/7规格的墙壁与墙壁之间的吊线上&#xff0c;吊线高度6m C.在2.2/7规格的电杆与电杆之间的吊线上&#xff0c;吊线高度…

JAVA开发的一套医院绩效考核系统源码:KPI关键绩效指标的清晰归纳

KPI是关键绩效指标&#xff08;Key Performance Indicators&#xff09;的缩写&#xff0c;它是一种用于衡量员工或组织绩效的量化指标。这些指标通常与组织的目标和战略相关&#xff0c;并帮助管理层评估员工和组织的实际表现。KPI还可以为员工提供清晰的方向&#xff0c;使他…

ORBSLAM3_ROS_Ubuntu18_04环境搭建安装

orbslam3安装 ORB-SLAM3配置及安装教程&#xff08;2023.3&#xff09;_orbslam3安装-CSDN博客 换源&#xff0c;换成国内的 搜索software 安装工具 sudo apt install git sudo apt update sudo apt install gcc g cmake安装 cmake安装新版本 ubuntu20.04安装cmake详细…

《数据赋能:一本书讲透数字化营销与运营》—— 从正确的数据观开始

基于数据打通的“全链路”营销是当下的“时髦”&#xff0c;应用它的前提是什么&#xff1f;深度营销和运营的关键数据如何获得&#xff1f;如何利用数据进行更精准的营销投放&#xff1f;如何利用数据优化投放的效果&#xff1f;如何促进消费者的转化&#xff0c;以及激活留存…

分享一套基于SSM的九宫格日志网站(源码+文档+部署)

大家好&#xff0c;今天给大家分享一套基于SSM的九宫格日志网站 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringSpringMvcMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 博主介绍&#xff1a; 一名Java全栈工程师&#xff0c;专注于Java全…

GPT-5:AI的博士时代与我们的未来

目录 引言第一部分&#xff1a;GPT-5技术突破预测1. NLP技术的革新1.1 算法进步对理解力提升的影响1.2 技术突破推动行业发展 2. 行业推动力2.1 教育行业的变革2.2 医疗行业的创新2.3 法律行业的效率提升 第二部分&#xff1a;智能系统与人类的协作1. 辅助决策的角色1.1 决策支…

基于JSP的沙县小吃点餐系统

开头语&#xff1a;你好呀&#xff0c;我是计算机学长猫哥&#xff01;如果有相关需求&#xff0c;文末可以找到我的联系方式。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP技术 工具&#xff1a;Eclipse、MySQL、WAMP服务器 系统展示 管理员…

探索 LLamaWorker:基于LLamaSharp的.NET本地大模型服务

LLamaWorker 是一个基于 LLamaSharp 项目开发的 HTTP API 服务器。它提供与 OpenAI 兼容的 API&#xff0c;使得开发者可以轻松地将大型语言模型&#xff08;LLM&#xff09;集成到自己的应用程序中。 1. 背景 在人工智能领域&#xff0c;大型语言模型&#xff08;LLM&#xf…

【OpenCV 图像处理 Python版】图像处理的基本操作

文章目录 1.图像的 IO 操作1.1 图像读取 imread1.2 图像显示1.2.1 opencv 方式1.2.2 matplotlib 方式 1.3 图像保存 imwrite 2.绘制几何图形1. 绘制直线2. 绘制矩形3. 绘制圆形4. 绘制多边形5. 添加文字 3.获取并修改图像中的像素点3.1 获取像素值3.2 修改像素值3.3 获取和修改…

Chromium 调试指南2024 Mac篇 - 准备工作 (一)

1.引言 Chromium是一个由Google主导开发的开源浏览器项目&#xff0c;它为Google Chrome浏览器提供了基础框架。Chromium不仅是研究和开发现代浏览器技术的重要平台&#xff0c;还为众多其他基于Chromium的浏览器&#xff08;如Microsoft Edge、Brave等&#xff09;提供了基础…

利用MATLAB批量读取图像时出现名称排序错乱问题解决方法sort-nat函数

利用MATLAB批量读取图像时出现名称排序错乱问题解决方法sort-nat函数 一、问题描述二、解决方法 欢迎学习交流&#xff01; 邮箱&#xff1a; z…1…6.com 网站&#xff1a; https://zephyrhours.github.io/ 一、问题描述 使用MATLAB批量读取图像文件&#xff0c;会发现提取出…

Redis-实战篇-缓存击穿问题及解决方案

文章目录 1、缓存击穿2、常见的解决方案有两种&#xff1a;2.1、互斥锁2.2、逻辑过期2.3、两种方案对比 3、利用互斥锁解决缓存击穿问题3.1、ShopServiceImpl.java3.2、使用 jmeter.bat 测试高并发 4、利用逻辑过期解决缓存击穿问题 1、缓存击穿 缓存击穿问题 也叫 热点key问题…

图形化用户界面-java头歌实训

图形化用户界面 import java.awt.*; import javax.swing.*; public class GraphicsTester extends JFrame { public GraphicsTester() { super("Graphics Demo"); setSize(480, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void paint…