当前位置: 首页 > news >正文

c++---------流类

  1. 格式化输入(cin的格式化)
    • 基本用法与控制符
      • 在C++中,std::cin用于从标准输入(通常是键盘)读取数据。它默认以空白字符(空格、制表符、换行符)为分隔符来读取不同的数据。例如,读取两个整数:
      #include <iostream>
      int main() {int num1, num2;std::cin >> num1 >> num2;std::cout << "两个数分别是: " << num1 << "和" << num2 << std::endl;return 0;
      }
      
      • 可以使用一些控制符来改变cin的行为。例如,std::hex用于以十六进制格式读取数据,std::oct用于以八进制格式读取数据。读取十六进制整数的示例:
      #include <iostream>
      int main() {int hex_num;std::cin >> std::hex >> hex_num;std::cout << "十六进制转换后的十进制数是: " << hex_num << std::endl;return 0;
      }
      
    • 输入验证与错误处理
      • 当输入的数据类型与期望不符时,cin会进入错误状态。可以通过cin.fail()来检查是否出现错误。例如,期望输入一个整数,但用户输入了一个字符:
      #include <iostream>
      int main() {int num;std::cin >> num;if (cin.fail()) {std::cerr << "输入错误,请输入一个整数" << std::endl;cin.clear(); std::string discard;std::cin >> discard; } else {std::cout << "输入的整数是: " << num << std::endl;}return 0;
      }
      
      在上述代码中,cin.clear()用于清除错误状态,std::string discard; std::cin >> discard;用于丢弃输入缓冲区中的错误数据。

在这里插入图片描述

  1. 格式化输出(cout的格式化)

    • 基本格式化控制符
      • std::cout是用于标准输出(通常是控制台)的对象。可以使用控制符来格式化输出。例如,std::setw()用于设置输出宽度,std::setfill()用于设置填充字符,std::fixedstd::scientific用于控制浮点数的输出格式。输出一个右对齐的整数示例:
      #include <iostream>
      #include <iomanip>
      int main() {int num = 123;std::cout << std::setw(6) << std::right << num << std::endl;return 0;
      }
      
    • 自定义输出格式(通过重载<<运算符)
      • 对于自定义的类,可以重载<<运算符来实现自定义的输出格式。例如,定义一个Point类并重载<<运算符:
      class Point {
      public:int x;int y;Point(int a = 0, int b = 0) : x(a), y(b) {}
      };
      std::ostream& operator<<(std::ostream& os, const Point& p) {os << "(" << p.x << ", " << p.y << ")";return os;
      }
      int main() {Point p(3, 4);std::cout << p << std::endl;return 0;
      }
      
  2. 数据文件(文件输入输出)

    • 文件写入(ofstream
      • std::ofstream用于将数据写入文件。可以指定文件名和打开模式(如ios::out用于输出,ios::app用于追加等)。例如,将一些文本写入文件:
      #include <iostream>
      #include <fstream>
      int main() {std::ofstream out_file("output.txt", ios::out);if (out_file) {out_file << "这是第一行" << std::endl;out_file << "这是第二行" << std::endl;out_file.close();} else {std::cerr << "无法打开文件进行写入" << std::endl;}return 0;
      }
      
    • 文件读取(ifstream
      • std::ifstream用于从文件中读取数据。例如,读取刚才写入文件中的内容:
      #include <iostream>
      #include <ifstream>
      int main() {std::ifstream in_file("output.txt");if (in_file) {std::string line;while (std::getline(in_file, line)) {std::cout << line << std::endl;}in_file.close();} else {std::cerr << "无法打开文件进行读取" << std::endl;}return 0;
      }
      
    • 二进制文件操作(fstream
      • 对于二进制文件,可以使用std::fstream进行读写操作。例如,将一个整数数组以二进制形式写入文件,然后再读取出来:
      #include <iostream>
      #include <fstream>
      int main() {int numbers[] = {1, 2, 3, 4, 5};// 写入二进制文件std::fstream bin_file("binary.bin", ios::out | ios::binary);if (bin_file) {bin_file.write(reinterpret_cast<char*>(numbers), sizeof(numbers));bin_file.close();} else {std::cerr << "无法打开二进制文件进行写入" << std::endl;}// 读取二进制文件int read_numbers[5];std::fstream bin_read_file("binary.bin", ios::in | ios::binary);if (bin_read_file) {bin_read_file.read(reinterpret_cast<char*>(read_numbers), sizeof(read_numbers));for (int i = 0; i < 5; ++i) {std::cout << read_numbers[i] << " ";}bin_read_file.close();} else {std::cerr << "无法打开二进制文件进行读取" << std::endl;}return 0;
      }
      
  3. 类层次(面向对象中的类继承层次结构)

    • 基本概念
      • 类层次结构是通过类的继承关系构建的。基类(父类)定义了一些通用的属性和行为,派生类(子类)继承基类并可以添加自己的特定属性和行为。例如,定义一个Shape基类和CircleRectangle派生类:
      class Shape {
      public:virtual double area() = 0;
      };
      class Circle : public Shape {
      public:double radius;Circle(double r) : radius(r) {}double area() override {return 3.14 * radius * radius;}
      };
      class Rectangle : public Shape {
      public:double width;double height;Rectangle(double w, double h) : width(w), height(h) {}double area() override {return width * height;}
      };
      
    • 多态性与虚函数
      • 多态性允许通过基类指针或引用调用派生类的函数。在上述例子中,Shape类中的area函数是虚函数,通过基类指针调用area函数时,会根据指针所指向的实际对象(CircleRectangle)来调用相应的area函数实现。例如:
      int main() {Shape* shape1 = new Circle(3);Shape* shape2 = new Rectangle(4, 5);std::cout << "圆的面积: " << shape1->area() << std::endl;std::cout << "矩形的面积: " << shape2->area() << std::endl;delete shape1;delete shape2;return 0;
      }
      
    • 继承中的访问控制(publicprivateprotected
      • 在继承关系中,public继承表示派生类继承基类的publicprotected成员,并且这些成员在派生类中的访问权限不变。private继承会将基类的publicprotected成员变为派生类的private成员。protected继承会将基类的public成员变为派生类的protected成员。例如:
      class Base {
      public:int public_member;
      protected:int protected_member;
      private:int private_member;
      };
      class PublicDerived : public Base {
      public:void accessMembers() {public_member = 1; protected_member = 2; }
      };
      class PrivateDerived : private Base {
      public:void accessMembers() {public_member = 3; protected_member = 4; }
      };
      
      PublicDerived类中,可以直接访问基类的publicprotected成员。而在PrivateDerived类中,虽然可以访问基类的publicprotected成员,但是这些成员在PrivateDerived类外部是不可访问的,因为它们被继承为private成员。
      在这里插入图片描述

相关文章:

c++---------流类

格式化输入&#xff08;cin的格式化&#xff09; 基本用法与控制符 在C中&#xff0c;std::cin用于从标准输入&#xff08;通常是键盘&#xff09;读取数据。它默认以空白字符&#xff08;空格、制表符、换行符&#xff09;为分隔符来读取不同的数据。例如&#xff0c;读取两个…...

3、基本复用原理和复用单元

基本复用原理 字节间插复用&#xff1a; SDH 采用字节间插复用方式来构建更高等级的信号。这是一种将低速率信号按字节为单位依次插入到高速率信号帧结构中的复用方法。例如&#xff0c;将多个 STM - 1 信号复用成 STM - 4 信号时&#xff0c;是把 4 个 STM - 1 信号的字节依次…...

Vue与React:前端框架的巅峰对决

文章目录 一、引言&#xff08;一&#xff09;前端框架发展现状简述 二、Vue 与 React 框架概述&#xff08;一&#xff09;Vue.js 简介&#xff08;二&#xff09;React.js 简介 三、开发效率对比&#xff08;一&#xff09;Vue 开发效率分析&#xff08;二&#xff09;React …...

Java 中的面向对象编程 (OOP) 概念

引言 面向对象编程&#xff08;Object-Oriented Programming, OOP&#xff09;是一种编程范式&#xff0c;它通过将数据和操作封装在一起&#xff0c;形成一个称为“对象”的实体来组织代码。Java 是一种完全支持 OOP 的语言&#xff0c;广泛应用于企业级应用开发。本文将深入…...

十二月第20讲:Python中指数概率分布函数的绘图详解

一、指数分布的理论概述 1. 定义与公式 指数分布是一种描述随机变量在一个固定底数上的对数值的分布情况&#xff0c;或者在概率理论和统计学中&#xff0c;用于描述泊松过程中事件之间的时间间隔的概率分布。具体来说&#xff0c;它表示事件以恒定平均速率连续且独立地发生的…...

汽车IVI中控开发入门及进阶(44):杰发科智能座舱芯片

概述: 杰发科技自成立以来,一直专注于汽车电子芯片及相关系统的研发与设计。 产品布局: 合作伙伴: 杰发科技不断提升产品设计能力和产品工艺,确保产品达 到更高的质量标准。目前杰发科技已通过ISO9001质 量管理体系与CMMIL3认证。 杰发科技长期合作的供应商(芯片代工厂、…...

【py脚本+logstash+es实现自动化检测工具】

概述 有时候&#xff0c;我们会遇到需要查看服务器的网络连接或者内存或者其他指标是否有超时&#xff0c;但是每次需要登录到服务器查看会很不方便,所以我们可以设置一个自动脚本化工具自动帮助我们查看&#xff0c;下面我做了一个demo在windows上面。 一、py脚本 import s…...

Zookeeper的选举机制

Zookeeper的leader选举机制是基于ZAB&#xff08;Zookeeper Atomic Broadcast&#xff09;协议的&#xff0c;这是一种基于Paxos协议的变种&#xff0c;专门用于Zookeeper的分布式协调服务。 选举过程主要分为以下几个阶段&#xff1a; 1.初始化阶段 当一个新的Zookeeper服…...

2024-05-18 前端模块化开发——ESModule模块化

目录 1、认识 ES Module2、ES Module基本使用3、export关键字 3.1、导出方式一——直接导出3.2、导出方式二——通过as起别名3.3、导出方式三——定义的时候就直接导出 4、import关键字 4.1、导入方式一——直接导入4.2、导入方式二——通过as起别名4.3、导入方式三——可以给…...

Linux IPV6 地址配置 | IPv6 禁用 | ping6 过程细节剖析 | IPv6 排障

注&#xff1a; 本文为 “Linux IPV6 地址配置 | IPv6 禁用 | ping6 过程细节剖析 | IPv6 排障” 相关文章合辑。 Linux 服务器设备上配置 IPV6 地址方法 aischang 于 2018-08-25 12:56:25 发布 1. 手动执行命令配置&#xff1a; ifconfig em1 inet6 add 8888::a7/96 up2. 删…...

【YashanDB知识库】XMLAGG方法的兼容

本文内容来自YashanDB官网&#xff0c;原文内容请见 https://www.yashandb.com/newsinfo/7802943.html?templateId1718516 【关键字】 XMLAGG方法的兼容 【问题描述】 崖山数据库不支持将XMLAGG相关的函数内容&#xff0c;需要替换成支持的功能函数WM_CONCAT(T.COLUMN_NAME…...

echarts加载区域地图,并标注点

效果如下&#xff0c;加载了南海区域的地图&#xff0c;并标注几个气象站点&#xff1b; 1、下载区域地图的JSON&#xff1a;DataV.GeoAtlas地理小工具系列 新建nanhai.json&#xff0c;把下载的JSON数据放进来 说明&#xff1a;如果第二步不打勾&#xff0c;只显示省的名字&a…...

echarts画风向杆

1.安装echarts 2.引入echarts 4.获取数据&#xff0c;转换数据格式 windProfile.title.text ${moment(time.searchTime[0], ‘YYYY-MM-DD HH:mm:ss’).format( ‘YYYY-MM-DD HH:mm’ )}-${moment(time.searchTime[1], ‘YYYY-MM-DD HH:mm:ss’).format(‘YYYY-MM-DD HH:mm’)…...

【LeetCode每日一题】LeetCode 345.反转字符串中的元音字母

LeetCode 345.反转字符串中的元音字母 题目描述 给定一个字符串 s&#xff0c;你需要反转字符串中所有的元音字母&#xff0c;并返回新的字符串。 元音字母是 a, e, i, o, u&#xff0c;这些字母的大小写都会被考虑。 示例 1: 输入: s "hello" 输出: "holle…...

蓝桥杯练习生第四天

小蓝每天都锻炼身体。 正常情况下&#xff0c;小蓝每天跑 11 千米。如果某天是周一或者月初&#xff08;11 日&#xff09;&#xff0c;为了激励自己&#xff0c;小蓝要跑 22 千米。如果同时是周一或月初&#xff0c;小蓝也是跑 22 千米。 小蓝跑步已经坚持了很长时间&#x…...

cesium 常见的 entity 列表

Cesium 是一个用于创建3D地球和地图的开源JavaScript库。它允许开发者在Web浏览器中展示地理空间数据,并且支持多种类型的空间实体(entities)。 Entities是Cesium中用于表示地面上或空中的对象的一种高层次、易于使用的接口。它们可以用来表示点、线、多边形、模型等,并且可…...

Java旅程(五)Spring 框架与微服务架构 了解 JVM 内部原理和调优

在现代企业级应用中&#xff0c;Spring 框架和微服务架构已经成为主流技术&#xff0c;而 Java 虚拟机&#xff08;JVM&#xff09;的理解和调优对于保证应用的高性能和稳定性也至关重要。本篇博客将深入讲解 Spring 框架与微服务架构&#xff0c;并进一步探讨 JVM 内部原理和调…...

Niushop-master靶场漏洞

靶场搭建 将 niushop-master.zip 压缩包放到网站的根目录&#xff0c;解压后访问 浏览器访问 install.php &#xff0c;根据提示安装即可 1.SQL注入漏洞 随便选择一种商品分类&#xff0c;发现有参数&#xff0c;测试注入 测试闭合发现页面报错有sql注入 应该是环境的问题&am…...

35道面向初中级前端的基础面试题

新鲜出炉的8月前端面试题 跨域资源共享 CORS 阮一峰 3. JSONP 是什么&#xff1f; 这是我认为写得比较通俗易懂的一篇文章jsonp原理详解——终于搞清楚jsonp是啥了。 4. 事件绑定的方式 嵌入dom 按钮 直接绑定 btn.onclick function(){} 事件监听 btn.addEventList…...

MFC用List Control 和Picture控件实现界面切换效果

添加List Control 和Picture控件 添加 3个子窗体 把子窗体边框设置为None, 样式设为Child 声明 CListCtrl m_listPageForm;void ShowForm(int nIndex);void CreatFormList();void CMFCApplication3Dlg::DoDataExchange(CDataExchange* pDX) {CDialogEx::DoDataExchange(pDX);DD…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)

引言 在嵌入式系统中&#xff0c;用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例&#xff0c;介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单&#xff0c;执行相应操作&#xff0c;并提供平滑的滚动动画效果。 本文设计了一个…...