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

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;}
http://www.jsqmd.com/news/351666/

相关文章:

  • 【Veo3大模型限时优惠】支持4K超高清视频生成分辨率输出
  • Python基于Vue的婚纱摄影预订管理系统 django flask pycharm
  • js--13
  • 告别机械回复:三步微调AI模型,打造会“读心”的智能客服
  • 深入解析C/S模型下的TCP通信流程:从握手到挥手的技术之旅
  • 从迷茫自学到稳定入行:我的 FPGA 上岸全过程
  • 2026年招投标评审专家自然人开票解决方案选型参考:主流方案对比与场景适配建议
  • 重温主旋律
  • RAG灵魂第一步:掌握这5种文档切分技巧,轻松让AI“读懂”你的资料库
  • 数字图像处理篇---明度与饱和度
  • 【架构实战】RedisTemplate与RedisPool架构对比:RedisTemplate 抽象层 vs JedisPool 资源层;同步阻塞 vs 异步非阻塞
  • 数字图像处理篇---描述颜色地的红、绿、蓝、黄
  • 记IP嵌入式端IP地址合法性校验
  • 数字图像处理篇---YPbPr颜色空间
  • 驾驭万亿参数 MoE:深度剖析 CANN ops-transformer 算子库的“核武库”
  • AIGC 的“数学心脏”:一文读懂 CANN ops-math 通用数学库
  • 数字图像处理篇---LAB颜色空间
  • 解构 AIGC 的“核动力”引擎:华为 CANN 如何撑起万亿参数的大模型时代
  • 数字图像处理篇---YUV颜色空间
  • CANN生态核心算子库合集:赋能AIGC多模态落地的全链路算力支撑
  • 开绕组永磁同步电机故障诊断及容错控制技术研究
  • 当 Triton 遇上 Ascend:深度解析 GE Backend 如何打通 NPU 推理“最后一公里”
  • ORA-600 kcratr_nab_less_than_odr和ORA-600 4193故障处理---惜分飞
  • 伺服电机驱动的连铸结晶器振动系统故障检测和容错控制
  • 数字图像处理篇---YCbCr颜色空间
  • 基于LSTM长短期记忆神经网络的轴承剩余寿命预测MATLAB实现
  • 基于小样本学习的滚动轴承故障诊断方法研究
  • 数字图像处理篇---HSL颜色空间
  • 2026年背涂胶行业十大品牌揭晓:谁将引领市场新格局?
  • AI使用控制采购指南:企业如何管理AI风险