AcWing语法基础课笔记 第五章 C++中的字符串

news2024/11/18 3:26:00

                                第五章 C++中的字符串

字符串是计算机与人类沟通的重要手段。                 ——闫学灿

  1. 字符与整数的联系——ASCII码

每个常用字符都对应一个-128~127的数字,二者之间可以相互转化:

 

常用ASCII值:’A’-‘Z’ 是65~90,’a’-‘z’是97-122,’0’-‘9’是48-57。

字符可以参与运算,运算时会将其当做整数:

 

练习:输入一行字符,统计出其中数字字符的个数,以及字母字符的个数。

  1. 字符数组

字符串就是字符数组加上结束符’\0’。

可以使用字符串来初始化字符数组,但此时要注意,每个字符串结尾会暗含一个’\0’字符,因此字符数组的长度至少要比字符串的长度多1!

 

    1. 字符数组的输入输出:

 

读入一行字符串,包括空格:

 

    1. 字符数组的常用操作

下面几个函数需要引入头文件:

#include <string.h>

  1. strlen(str),求字符串的长度
  2. strcmp(a, b),比较两个字符串的大小,a < b 返回-1,a == b 返回0,a > b返回1。这里的比较方式是字典序!
  3. strcpy(a, b),将字符串b复制给从a开始的字符数组。

 

    1. 遍历字符数组中的字符:

 

练习:给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出“no”。

练习:把一个字符串中特定的字符全部用给定的字符替换,得到一个新的字符串。

  1. 标准库类型 string

可变长的字符序列,比字符数组更加好用。需要引入头文件:

#include <string>

 

    1. 定义和初始化

 

    1. string 上的操作
  1. string的读写:

注意:不能用printf直接输出string,需要写成:printf(“%s”, s.c_str());

  1. 使用getline读取一整行

 

  1. string的empty和size操作(注意size是无符号整数,因此 s.size() <= -1一定成立):

  1. string 的比较:

支持 > < >= <= == !=等所有比较操作,按字典序进行比较。

 

  1. 为string对象赋值:

string s1(10, ‘c’), s2; // s1的内容是 cccccccccc;s2是一个空字符串

s1 = s2; // 赋值:用s2的副本替换s1的副本

// 此时s1和s2都是空字符串

  1. 两个string对象相加:

string s1 = “hello,  ”, s2 = “world\n”;

string s3 = s1 + s2; // s3的内容是 hello, world\n

s1 += s2; // s1 = s1 + s2

  1. 字面值和string对象相加:

做加法运算时,字面值和字符都会被转化成string对象,因此直接相加就是将这些字面值串联起来:

string s1 = “hello”, s2 = “world”; // 在s1和s2中都没有标点符号

string s3 = s1 + “, “ + s2 + ‘\n’;

当把string对象和字符字面值及字符串字面值混在一条语句中使用时,必须确保每个加法运算符的两侧的运算对象至少有一个是string:

string s4 = s1 + “, “; // 正确:把一个string对象和有一个字面值相加

string s5 = “hello” +”, “; // 错误:两个运算对象都不是string

string s6 = s1 + “, “ + “world”;  // 正确,每个加法运算都有一个运算符是string

string s7 = “hello” + “, “ + s2;  // 错误:不能把字面值直接相加,运算是从左到右进行的

3.3 处理string对象中的字符

 

可以将string对象当成字符数组来处理:

或者使用基于范围的for语句:

 

练习:密码翻译,输入一个只包含小写字母的字符串,将其中的每个字母替换成它的后继字母,如果原字母是’z’,则替换成’a’。

练习:输入两个字符串,验证其中一个串是否为另一个串的子串。

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

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

相关文章

【docker知识】DockerFile语法 2:构造指令

1官方文档&#xff1a;Dockerfile reference | Docker Documentation 一、说明 我们将以HelloWorld案例的方法&#xff0c;由浅入深地理解DockerFile指令&#xff0c;并生成自己的镜像。为了避免冗长的官网文章污染您的视线&#xff0c;这里将重要的&#xff0c;常见的指令…

Springcloud-配置中心config

一、添加依赖<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId&…

【大数据】HADOOP-YARN容量调度器多队列配置详解实战

简介 Capacity调度器具有以下的几个特性&#xff1a; 层次化的队列设计&#xff0c;这种层次化的队列设计保证了子队列可以使用父队列设置的全部资源。这样通过层次化的管理&#xff0c;更容易合理分配和限制资源的使用。容量保证&#xff0c;队列上都会设置一个资源的占比&a…

数据分析与SAS学习笔记4

INPUT语句&#xff1a;格式修饰符&#xff1a; “:” 修饰符。表示从下一个非空格列读入数据&#xff0c;直到:1 遇到再下一个空格列&#xff1b; 2 读到预先定义的变量长度&#xff1b; 3 数据行结束。哪个先出现就在哪儿结束。 “&” 修饰符。表示从下一个非空格列读入…

分享我从功能测试转型到测试开发的真实故事

由于这段时间我面试了很多家公司&#xff0c;也经历了之前公司的不愉快。所以我想写一篇文章来分享一下自己的面试体会。希望能对我在之后的工作或者面试中有一些帮助&#xff0c;也希望能帮助到正在找工作的你。 找工作 我们总是草率地进入一个自己不了解的公司工作&#xf…

【C语言】web后端 CGI

web后端 CGI 一、cgi的学习 cgi通用网关接口 是web服务器主机提供信息服务的标准接口。通过CGI接口&#xff0c;web服务器就能获取客户端提交的信息&#xff0c;转交给服务器端端CGI程序进行处理&#xff0c;最后返回结果给客户端。 服务器和CGI程序之间通过 stdin/stdout 标准…

Python学习-----函数3.0(嵌套函数、闭包、装饰器)

目录 1.函数嵌套 2.闭包 3.装饰器 这一节&#xff0c;我会详细Python中讲解函数的进阶内容&#xff0c;包括嵌套函数、闭包和装饰器。一起来学习吧&#xff01;&#xff01;&#xff01; 1.函数嵌套 概念&#xff1a;函数里面再定义一个函数 作用&#xff1a;当我们在一个多…

Jenkins 基于Kubernetes 弹性构建池

流程&#xff1a;创建Jenkins Agent&#xff1b;获取Jenkins Agent的参数&#xff1b;渲染yaml模板&#xff1b;调用K8s API在固定的NS中创建一个Pod&#xff1b;运行Jenkins pipeline到agent&#xff1b;创建Agentimport hudson.model.Node.Mode import hudson.slaves.* impor…

学Python不会不知道NumPy计算包吧,带你五分钟看懂NumPy计算包

从今天我们就开始进入 Python 数据分析工具的教程。 前段时间数据分析和Python都讲了一点点&#xff0c;但是Python的数据库&#xff0c;讲的少了点&#xff0c;所以接下来就讲讲这些重要的常用数据库吧&#xff01;&#xff01;&#xff01; Python 数据分析绝对绕不过的四个…

数据库常用命令

文章目录1. 数据库操作命令1.进入数据库2.查看数据库列表信息3.查看数据库中的数据表信息2.SQL语句命令1. 创建数据表2. 基本查询语句3. SQL排序4. SQL分组统计5. 分页查询6. 多表查询7.自关联查询8.子查询1. 数据库操作命令 1.进入数据库 mysql -uroot -p2.查看数据库列表信…

PDF怎么转换成Word?两种PDF免费转Word方法推荐

不知道你们有没有发现&#xff0c;我们在网上下载的很多资料都是PDF格式的&#xff0c;尽管PDF文件也可以通过专门的PDF编辑器来编辑&#xff0c;但是PDF文档作为版式文档&#xff0c;编辑起来还是存在很多局限性&#xff0c;所有当我们需要大量编辑修改文档的时候&#xff0c;…

网络编程套接字之TCP

文章目录一、TCP流套接字编程ServerSocketSocketTCP长短连接二、TCP回显服务器客户端服务器客户端并发服务器UDP与TCP一、TCP流套接字编程 我们来一起学习一下TCP socket api的使用&#xff0c;这个api与我们之前学习的IO流操作紧密相关&#xff0c;如果对IO流还不太熟悉的&am…

Springboot 我随手封装了一个万能的导出excel工具,传什么都能导出

前言 如题&#xff0c;这个小玩意&#xff0c;就是不限制你查的是哪张表&#xff0c;用的是什么类。 我直接一把梭&#xff0c;嘎嘎给你一顿导出。 我知道&#xff0c;这是很多人都想过的&#xff0c; 至少我就收到很多人问过我这个类似的问题。 我也跟他们说了&#xff0c;但…

python冒号的用法总结

一维数组 1. 单个冒号的情况 1.1 写完整的情况下 单个冒号的情况下&#xff0c;对数组的遍历操作是从前向后操作。如&#xff1a;arr[a:b] &#xff0c;冒号前的a含义是从a开始遍历&#xff0c;冒号后的b含义是到b截止&#xff08;不包括b&#xff09;。 arr [1, 2, 3, 4,…

Qt扫盲-QMake 语言概述

QMake 语言概述一、概述二、变量三、替换函数四、测试函数一、概述 这里主要就是记录一下如何使用 qmake Manual&#xff0c;里面关于我对 qmake的理解&#xff0c;以及如何配置这个 qt 工程文件&#xff0c;通过配置工程文件&#xff0c;来构建出&#xff0c;APP&#xff0c;…

如何在Github上配置ssh key的密钥

Step0 : 解释说明 git使用SSH配置&#xff0c; 初始需要以下三个步骤 使用秘钥生成工具生成rsa秘钥和公钥将rsa公钥添加到代码托管平台将rsa秘钥添加到ssh-agent中&#xff0c;为ssh client指定使用的秘钥文件 Step 1: 核验本地主机是否已经存在ssh密钥。&#xff08;若id_rs…

ChatGPT之文章生成

文章目录介绍激励设计Prompt Design故障调整Troubleshooting分类Classification提高分类器的效率生成对话内容转化翻译转化总结实际问答插入文本编辑模式介绍 ChatGPT功能很强大&#xff0c;它可以根据你给出的模板和文本进行文本补全&#xff0c;最好的探索方式就是使用我们给…

数据预处理(无量纲化、缺失值、分类特征、连续特征)

文章目录1. 无量纲化1.1 sklearn.preprocessing.MinMaxScaler1.2 sklearn.preprocessing.StandardScaler2. 缺失值3. 分类型特征4. 连续型特征数据挖掘的五大流程包括&#xff1a;获取数据数据预处理特征工程建模上线 其中&#xff0c;数据预处理中常用的方法包括数据标准化和归…

3分钟学会图新地球图源制作详细教程

图新地球图源制作 1.资源准备 &#xff08;1&#xff09; 准备一份图新地球支持的lrc格式的图源; &#xff08;2&#xff09; 安装图新地球 &#xff08;LSV&#xff09;软件和奥维omap软件 。 2.操作步骤 (1) 用记事本打开lrc格式的文件(图①)&#xff0c;同时用奥维软件…

Unity 多语言 轻量高效的多语言工具集 LanguageManager

效果展示 支持excel导入自动化 组件化 更方便 也提供直接获取多语言的接口 没有挂 LanguageText的对象也可以获取多语言文本内容 支持 Format接口 可以传递N个参数进来组装多语言 支持首次系统语言自测 支持语言切换后本地自动保存配置 支持实时切换 同步刷新所有UI 容错处…