C++学习第七天----string类,结构,共用体和枚举

本文介绍了C++中的string类使用、C++11字符串初始化、赋值与拼接,以及结构体、共用体和枚举的基本概念,包括它们的定义、操作和用途。
摘要由CSDN通过智能技术生成
1.string类简介

首先要使用string类,程序要包含头文件string;string类位于名称空间std中,所以using编译指令是必须要有的,或者std::string来引用它,不过这比较麻烦;

类设计让程序能够自动处理string的大小;

可以这么说,把char数组视为一组用于存储一个字符串的char存储单元,而string类变量是一个表示字符串的实体;

2.C++11字符串初始化
string third_date = {“The Breed Bowl"};
3.赋值,拼接和附加

不能将一个数组赋给另一个数组,但可以将一个string对象赋值给另一个string对象;

char charr1[20];
char charr2[20];

string str1;
string str2;

charr1 = charr2;//这里就会报错
str1 = str2;//这里就不会报错

string也可以合并两个string对象,还可以使用运算符+=将字符串附加到string对象的末尾;

继续上面的代码:
string str3;
str3 = str1 + str2;
str1 += str2;
4.string类的其他操作

        函数strcpy()将字符串复制到字符数组中;

        函数strcat()将字符串附加到字符数组末尾;

        确定字符串中字符数的方法:

char aharr1[20];
string str1;

int len1 = strl.size();
int len2 = strlen(charr1);

strlen()是一个常规函数,返回该字符串包含的字符数,自动去掉空字符;读到空字符结束;

函数size()功能与上相同;

5.string 类I/O

c语言的字符数组与c++的string类对象,对于读取一个单词时基本相同,但是读取一行时,使用的句法不同;参考下下面的代码;

code_c++/strtype4.cpp · Kite/C和C++ - 码云 - 开源中国 (gitee.com)

6.结构简介

        就是c语言的结构体,这里叫结构,结构是用户定义的类型;

        关键字struct表明,这定义的是一个结构的布局;标识符inflatable是这种数据格式的名称;定义结构后,便可以创建这种类型的变量;C++中允许在声明结构变量时省略关键字struct(c语言中是必须要有的);可以延申一下去了解一下位域结构体;

可以使用成员运算符(.) 来访问各个成员;

struct inflatable
{
	char name[20];
	float volume;
	double price; 
};

struct inflatable str1;
inflatable str2;

str1.volume = 12;

注意初始化方式,列表初始化,且等号可有可无;如果大括号内未包含任何东西,各个成员都将设置为0;不允许缩窄转换;

可以使用赋值运算符(=) 将结构赋给另一个同类型的结构,即使成员是数组,这种赋值被称为成员赋值;

7.结构中的位字段

字段的类型应为整型或枚举,接下来是冒号,冒号后面是一个数字,它指定了使用的位数;可以使用没有名称的字段来提供间距;每个成员都被称作位字段;

struct torgle
{
    unsigned int SN : 4;
    unsigned int : 4; //用来提供间距;
    bool goodIn : 1;
    bool goodTorgle : 1;
}

torgle tr = {14 , true , false};
8.共用体

共用体(union)是一种数据格式,能够存储不同的数据类型,但只能同时存储其中的一种类型,这一点和结构体不同;

共用体的长度为其最大成员的长度;

共用体的用途之一是,当数据项使用两种或更多种格式(不能同时使用)时,可节省空间;

匿名共用体没有名称,其成员将成为位于相同地址处的变量。显然,每次只有一个成员是当前的成员;

共用体常用于节省内存;

9.枚举

c++的enum工具提供了另一种创建符号常量的方式,这种方式可以代替const;用法与结构类似;

enum spectrum {red, orange, yellow, green, blue, violet, indigo, ultraviolet};

spectrum 成为新类型的名称,red,orange,yellow等作为符号常量,对应整数值0--7,这些常量叫做枚举量;

在不进行强制类型转换的情况下,只能将定义枚举时使用的枚举量赋给这种枚举的变量;

如果试图将一个非法值赋给它,有些编译器会出现错误,有些会发出警告;

对于枚举,只定义了赋值运算符,具体地说,没有为枚举定义算术运算;

枚举量是整型,可被提升为int类型,但int类型不能自动转换为枚举类型;

如果打算只使用常量,而不创建枚举类型的变量,则可以省略枚举类型的名称;

enum  {red, orange, yellow, green, blue, violet, indigo, ultraviolet};

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值