news 2026/10/8 11:54:39

C++之数据类型的扩展

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++之数据类型的扩展

文章目录

  • 结构体
  • 联合体
  • 枚举
  • 布尔
  • 字符串
    • string类型字符串定义
    • 字符串拷贝
    • 字符串连接
    • 字符串比较
    • 随机访问
    • 获取字符串长度
    • 转换为C风格的字符串
    • 字符串交换
    • demo

结构体

  • C++中定义结构型变量,可以省略struct关键字
  • C++结构体中可以直接定义函数,谓之成员函数(方法)
#include<iostream>#include<cstring>using namespace std;intmain(void){structstu{intage;charname[20];voidwho(void){cout<<"我是:"<<name<<" 我今年:"<<age<<endl;}};stu s1;s1.age=21;strcpy(s1.name,"张飞");s1.who();return0;}

联合体

  • C++中定义联合体变量,可以省略union关键字
unionXX{……};XX x;//定义联合体变量直接省略union
  • 支持匿名联合
union{//没有名字……};
#include<iostream>usingnamespacestd;intmain(void){union{//匿名联合intnum;charc[4];};num=0x12345678;cout<<hex<<(int)c[0]<<" "<<(int)c[1]<<endl;return0;}

枚举

  • C++中定义枚举变量,可以省略enum关键字
  • C++中枚举是独立的数据类型,不能当做整型数使用
#include<iostream>usingnamespacestd;intmain(void){enumCOLOR{RED,GREEN,BLUE};COLOR c=GREEN;//c = 2; //errorcout<<c<<endl;return0;}

布尔

  • C++中布尔(bool)是基本数据类型,专门表示逻辑值
  • 布尔类型的字面值常量:
    • true 表示逻辑真
    • false表示逻辑假
  • 布尔类型的本质: 单字节的整数,使用1表示真,0表示假
  • 任何基本类型都可以被隐式转换为布尔类型
#include<iostream>usingnamespacestd;intmain(void){boolb=true;cout<<b<<endl;cout<<boolalpha<<b<<endl;b=3+2;cout<<boolalpha<<b<<endl;return0;}

字符串

  • C++兼容C中的字符串表示方法和操作函数
  • C++专门设计了string类型表示字符串

string类型字符串定义

string s;//定义空字符串strings("hello");string s="hello";string s=string("hello");

字符串拷贝

string s1=“hello”;string s2=s1;

字符串连接

string s1=“hello”,s2=“ world”;string s3=s1+s2;//s3:hello worlds1+=s2;//s1:hello world

字符串比较

string s1=“hello”,s2=“ world”;if(s1==s2){cout<<“false”<<endl;}if(s1!=s2){cout<<“true”<<endl;}

随机访问

string s=“hello”;s[0]=“H”;//Hello

获取字符串长度

size_tsize();size_tlength();

转换为C风格的字符串

constchar*c_str();

字符串交换

voidswap(string s1,string s2);

demo

#include<iostream>#include<cstdio>usingnamespacestd;intmain(){/*定义*/string s1;//定义空字符串strings2("aaa");string s3=string("bbb");string s4="cccc";/*字符串的拷贝*/string s5=s2;// char *p5 = p2;cout<<"s5 = "<<s5<<endl;/*拼接*/s5+=s3;cout<<"s5 = "<<s5<<endl;/*字符串比较*/if(s2==s3){//strcmp(.....)cout<<"true"<<endl;}else{cout<<"false"<<endl;}/*取字符串长度*/cout<<"s5 length = "<<s5.length()<<endl;/*转换为C风格字符串*/constchar*p=s5.c_str();printf("%s\n",p);/*交换*/swap(s2,s3);cout<<"s2= "<<s2<<" s3= "<<s3<<endl;return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/7 4:25:37

数字图像处理篇---YPbPr颜色空间

一句话核心YPbPr是YUV的“物理实现版”&#xff0c;通过三根独立的线缆分别传输亮度(Y)和两个色差信号(Pb, Pr)&#xff0c;实现了比传统复合视频更好的画质。1. 为什么需要YPbPr&#xff1f;—— 画质追求在模拟视频时代&#xff0c;信号传输主要有三种方式&#xff1a;复合视…

作者头像 李华
网站建设 2026/10/7 4:20:47

数字图像处理篇---描述颜色地的红、绿、蓝、黄

为什么我们常用红、绿、蓝、黄&#xff08;有时还有青、品红&#xff09;来描述颜色&#xff0c;而不是其他组合&#xff1f;这背后是人眼生理结构、色彩科学历史和人类文化共同作用的结果。一句话核心因为这套颜色描述系统完美对应了&#xff1a;1&#xff09;人眼细胞的生理特…

作者头像 李华
网站建设 2026/10/7 3:03:10

基于小样本学习的滚动轴承故障诊断方法研究

✅ 博主简介&#xff1a;擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导&#xff0c;毕业论文、期刊论文经验交流。✅成品或者定制&#xff0c;扫描文章底部微信二维码。1)多尺度分解与自注意力机制融合的孪生网络诊断方法。针对小样本条件下特征提取不充分…

作者头像 李华
网站建设 2026/10/7 12:54:15

Python设置代理IP的简单方法

Python中使用代理IP&#xff0c;是实现高效网络请求管理的一种常用方式。对于需要频繁发起HTTP请求的开发者而言&#xff0c;合理配置代理不仅能保障连接稳定性&#xff0c;还能有效提升数据传输效率。那么在Python中如何快速实现代理设置&#xff1f;本文将从原理到实战&#…

作者头像 李华
网站建设 2026/10/7 12:49:42

代理IP选型指南:共享与独享怎么选?

共享代理与独享代理是两种常见的代理IP类型&#xff0c;广泛应用于数据连接、业务请求调度及网络环境搭建等领域。很多用户在选型过程中常会疑惑&#xff1a;哪种更适合自己的业务需求&#xff1f;本文将从工作原理、性能表现、使用场景及成本等多个维度&#xff0c;深入解析两…

作者头像 李华