news 2026/4/15 8:22:12

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/4/14 1:17:23

深入解析C/S模型下的TCP通信流程:从握手到挥手的技术之旅

深入解析C/S模型下的TCP通信流程&#xff1a;从握手到挥手的技术之旅引言&#xff1a;网络通信的艺术一、TCP通信基础&#xff1a;可靠传输的基石二、TCP通信流程详解1. 三次握手&#xff1a;建立连接的优雅舞蹈2. 数据传输&#xff1a;高效可靠的信息高速公路3. 四次挥手&…

作者头像 李华
网站建设 2026/4/13 15:11:02

驾驭万亿参数 MoE:深度剖析 CANN ops-transformer 算子库的“核武库”

目录 一、 为什么通用算子不够用了&#xff1f; 二、 核心能力&#xff1a;四大“护法”算子 三、 开发者宝典&#xff1a;从入门到调优 四、 结语 前言 在 AIGC 的“百模大战”中&#xff0c;Transformer 架构无疑是那个唯一的“真理”。从 GPT-4 到 DeepSeek&#xff0c…

作者头像 李华
网站建设 2026/4/8 23:03:56

深入理解CANN ops-nn BatchNormalization算子:训练加速的关键技术

好的&#xff0c;请查收这篇符合CANN库解读文章写作标准的深度技术博客&#xff1a; 深入理解CANN ops-nn BatchNormalization算子&#xff1a;训练加速的关键技术 摘要&#xff1a; 在深度神经网络训练过程中&#xff0c;BatchNormalization (批归一化&#xff0c;简称BN) 扮…

作者头像 李华
网站建设 2026/4/15 5:59:45

智能销售AI助手的模型压缩:AI应用架构师的技术选型

智能销售AI助手的模型压缩&#xff1a;AI应用架构师的技术选型 关键词&#xff1a;智能销售AI助手、模型压缩、AI应用架构师、技术选型、深度学习模型、量化、剪枝 摘要&#xff1a;本文聚焦于智能销售AI助手领域中模型压缩的技术选型问题&#xff0c;旨在为AI应用架构师提供…

作者头像 李华
网站建设 2026/4/6 8:52:49

FPGA 项目真的很难吗?科班生说出真相

这篇文章聊一聊 FPGA 项目在求职中的真实价值&#xff0c;尤其是对缺乏工程经历的学生来说&#xff0c;到底重不重要。前两天&#xff0c;有一位某 985 科班的同学来咨询项目训练的问题。他所在学校本身也有实验课和课程设计&#xff0c;但他说&#xff0c;多一个完整项目&…

作者头像 李华