C++学习第七天

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};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/32026.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript 中 let 和 var 的区别

首先,let 和 var 都是用于声明变量的关键字,在老版 JavaScript 中也许你会见到 var 方式来声明变量,而现如今几乎都是使用 let 进行声明,接下来看看这两个关键字之间的区别。 1、作用域 var var 声明的变量在函数内部有效&#x…

【C++】static_cast基本用法(详细讲解)

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

面试热题(字符串相加)

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。 你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。 输入:num1 "11"…

2023-08-11力扣每日一题

链接&#xff1a; 1572. 矩阵对角线元素的和 题意&#xff1a; 计算主对角线和副对角线上的元素的和&#xff08;不计算重复的&#xff09; 解&#xff1a; O.o&#xff1f; 实际代码&#xff1a; #include<bits/stdc.h> using namespace std; int diagonalSum(ve…

Debian 12.1 正式发布

导读Debian 12.1 现已发布&#xff0c;这是对稳定发行版 Debian 12&#xff08;代号 Bookworm &#xff09;的首次更新。本次发布主要增加了安全问题的修正&#xff0c;并对严重问题进行了一些调整。 一些更新内容包括&#xff1a; 妥善处理系统用户的创建&#xff1b;修复 eq…

Jmeter请求接口返回值乱码解决

乱码示例 解决步骤&#xff1a; 1.打开Jmeter安装目录下的bin目录&#xff0c;找到jmeter.properties 2.使用记事本或其他编译工具打开jmeter.properties文件&#xff0c;然后全局搜索sampleresult.default.encoding 3.在文件中添加sampleresult.default.encodingutf-8,保存…

前端技术Html,Css,JavaScript,Vue3

Html 1.基本标签 <h1>最大的标题</h1> <h2> . . . </h2> <h3> . . . </h3> <h4> . . . </h4> <h5> . . . </h5> <h6>最小的标题</h6><p>这是一个段落。</p> <br> &#xff08;换…

mac安装nvm管理工具遇到的问题和解决方法

nvm 是一款可以管理多版本node的工具&#xff0c;因为是刚买没多久的电脑之前用的都是windows&#xff0c;昨天折腾了一下午终于倒腾好了 第一步&#xff1a; 卸载电脑已有的node&#xff1b;访问nvm脚本网址&#xff0c;另存为到电脑上任何目录&#xff0c;我是放在桌面上的…

使用eXosip+ffmpeg、ffplay命令行实现sip客户端

文章目录 前言一、关键实现1、主要流程2、解决端口冲突&#xff08;1&#xff09;、出现原因&#xff08;2&#xff09;、解决方法 3、解析sdp&#xff08;1&#xff09;、定义实体&#xff08;2&#xff09;、解析视频&#xff08;3&#xff09;、解析音频 4、命令行推拉流&am…

threejs点击模型实现模型边缘高亮的选中效果--更改后提高帧率

先来个效果图 之前写的那个稍微有点问题&#xff0c;帧率只有30&#xff0c;参照官方代码修改后&#xff0c;帧率可以达到50了&#xff0c;在不全屏的状态下&#xff0c;帧率60 1.首先需要导入库 // 用于模型边缘高亮 import { EffectComposer } from "three/examples/js…

github 无语的问题,Host does not existfatal: Could not read from remote repository.

Unable to open connection: Host does not existfatal: Could not read from remote repository. image.png image.png image.png Please make sure you have the correct access rights and the repository exists. 如果github desktop和git pull 和git clone全部都出问题了&…

[保研/考研机试] KY102 计算表达式 上海交通大学复试上机题 C++实现

描述 对于一个不存在括号的表达式进行计算 输入描述&#xff1a; 存在多组数据&#xff0c;每组数据一行&#xff0c;表达式不存在空格 输出描述&#xff1a; 输出结果 示例1 输入&#xff1a; 6/233*4输出&#xff1a; 18思路&#xff1a; ①设立运算符和运算数两个…

视觉学习(七)---Flask 框架下接口调用及python requests 实现json字符串传输

在项目实施过程中需要与其他系统进行接口联调&#xff0c;将图像检测的结果传递给其他系统接口&#xff0c;进行逻辑调用。这中间的过程可以通过requests库进行实现。 1.安装requests库 pip install requests2.postman 接口测试 我们先通过postman 了解下接口调用&#xff0…

在vue3+vite项目中使用jsx语法

如果我掏出下图&#xff0c;阁下除了私信我加入学习群&#xff0c;还能如何应对&#xff1f; 正文开始 前言一、下载资源二、利用vite工具引入babel插件总结 前言 最近在为部署人员开发辅助部署的工具&#xff0c;技术栈是vue3viteelectron&#xff0c;在使用jsx语法时&#x…

08-2_Qt 5.9 C++开发指南_坐标系统和坐标变换

文章目录 1. 坐标变换函数2. 视口和窗口 1. 坐标变换函数 QPainter 在窗口上绘图的默认坐标系统如下图所示&#xff0c;这是绘图设备的物理坐标。 为了绘图的方便&#xff0c;QPainter 提供了一些坐标变换的功能&#xff0c;通过平移、旋转等坐标变换&#xff0c;得到一个逻辑…

linux Ubuntu 更新镜像源、安装sudo、nvtop、tmux

1.更换镜像源 vi ~/.pip/pip.conf在打开的文件中输入: pip.conf [global] index-url https://pypi.tuna.tsinghua.edu.cn/simple按下:wq保存并退出。 2.安装nvtop 如果输入指令apt install nvtop报错&#xff1a; E: Unable to locate package nvtop 需要更新一下apt&a…

gitlab 503 错误的解决方案

首先使用 sudo gitlab-ctl status 命令查看哪些服务没用启动 sudo gitlab-ctl status 再用 gitlab-rake gitlab:check 命令检查 gitlab。根据发生的错误一步一步纠正。 gitlab-rake gitlab:check 查看日志 tail /var/log/gitlab/gitaly/current删除gitaly.pid rm /var/opt…

SpringBoot 的自动装配特性

1. Spring Boot 的自动装配特性 Spring Boot 的自动装配&#xff08;Auto-Configuration&#xff09;是一种特性&#xff0c;它允许您在应用程序中使用默认配置来自动配置 Spring Framework 的各种功能和组件&#xff0c;从而减少了繁琐的配置工作。通过自动装配&#xff0c;您…

React Native数据存储

最近做RN开发中需要数据存储&#xff0c;查阅RN官方资料&#xff0c;发现推荐我们使用 AsyncStorage,对使用步骤做一下记录。 AsyncStorage是什么 简单的&#xff0c;异步的&#xff0c;持久化的key-value存储系统AsyncStorage在IOS下存储分为两种情况&#xff1a; 存储内容较…

MongoDB【无敌详细,建议收藏】

"探索MongoDB的无边之境&#xff1a;沉浸式数据库之旅" 欢迎来到MongoDB的精彩世界&#xff01;在这个博客中&#xff0c;我们将带您进入一个充满创新和无限潜力的数据库领域。无论您是开发者、数据工程师还是技术爱好者&#xff0c;MongoDB都将为您带来一场令人心动…