当前位置: 首页 > 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…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

【WebSocket】SpringBoot项目中使用WebSocket

1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖&#xff0c;添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...

第八部分:阶段项目 6:构建 React 前端应用

现在&#xff0c;是时候将你学到的 React 基础知识付诸实践&#xff0c;构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段&#xff0c;你可以先使用模拟数据&#xff0c;或者如果你的后端 API&#xff08;阶段项目 5&#xff09;已经搭建好&#xff0c;可以直接连…...

Pydantic + Function Calling的结合

1、Pydantic Pydantic 是一个 Python 库&#xff0c;用于数据验证和设置管理&#xff0c;通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发&#xff08;如 FastAPI&#xff09;、配置管理和数据解析&#xff0c;核心功能包括&#xff1a; 数据验证&#xff1a;通过…...

Selenium 查找页面元素的方式

Selenium 查找页面元素的方式 Selenium 提供了多种方法来查找网页中的元素&#xff0c;以下是主要的定位方式&#xff1a; 基本定位方式 通过ID定位 driver.find_element(By.ID, "element_id")通过Name定位 driver.find_element(By.NAME, "element_name"…...

初探用uniapp写微信小程序遇到的问题及解决(vue3+ts)

零、关于开发思路 (一)拿到工作任务,先理清楚需求 1.逻辑部分 不放过原型里说的每一句话,有疑惑的部分该问产品/测试/之前的开发就问 2.页面部分(含国际化) 整体看过需要开发页面的原型后,分类一下哪些组件/样式可以复用,直接提取出来使用 (时间充分的前提下,不…...