C++ 的string类学习

2023-11-08

一、string类型变量构造赋值方法

1、构造

(1)       用等号直接赋值S0

(2)       定义一个空白变量S1

(3)       定义一个新变量S2,内容完全等于S0

(4)       定义一个新变量S3,内容是S0从第八个字符开始的三个字符

(5)       定义一个新变量S4,用括号赋值(和(1)作用效果一样,只不过过使用()来赋)

(6)       定义一个新变量S5,内容是””里面的前12个字符

(7)       定义一个新变量S6,内容是n=10个相同字符’x’。

总体展示:

2、访问

因为string存在[ ]用法,所以可以用访问数组元素的方法来访问字符串。

例如string  A = “ab cd ef ghijk.”

那么A[0]=’a’ ,         A[1]=’b’ ,        A[2]=’ ‘ .

上图就是遍历输出字符串str,输出结果就是“hello world”。后面又输出数组的下标为6的元素,即第七个元素‘w’。

3、插入

图示用法:

字符串变量名.insert(位置,内容(或者定义好的字符串变量地址(名字)))。

在str4字符串中从下标6开始插入str3的下标0开始的7个字符的内容

 在str4字符串中从下标13开始插入内容"to be"

 在str4字符串中从下标19开始插入str2字符串

4、删除

Str4内容:to be or not to be that is a question

只有两种:

第一种:从某个下标(图中是19)开始及其后面全部丢弃。

第二种:从某个下标(图中是0)开始的n个字符(图中是9)删掉。

5、清空

用.clear()函数。清空后str4里面就无内容了

6、运算

(1)加法(字符串的拼接)

(2)比较(用ASCII码从第一个字符开始进行字典比较)

7、常用函数

1、 变量名.size()返回字符串长度(.size())

2在字符串中寻找子串并返回子串第一个字符下标(.find())

两张图中:第二行加的10都是指定从哪个位置开始往后找

找不到就返回-1

3返回子串(.substr())

分别是:

13下标开始返回后面的所有字符形成的子串;

13下标开始返回后面的3个字符形成的子串。

4头文件:

(1)String.h = cstring ,都是C语言里的

(2)string是C++里的针对字符串这个类的,直接输入输出的话只能用cin,cout。不能用scanf,printf因为这两个是C的,无法用于C++特有的string类的输入输出必须改造一下字符串变量才行。

例:

1

2

3

string a;

scanf("%s",a);

printf("%s",a);

这样不行,会报错。那么怎么解决这个问题呢?

很简单,只需要在变量后加一个“.c_str()”就行了。
具体代码段如下:

1

2

3

string a;

scanf("%s",a.c_str());

printf("%s",a.c_str());                                                                         

这是因为通过string类的c_str()函数能够把string对象转换成c中的字符串的样式。







☆C/C++关于字符串输入输出空格问题总结

1cin

针对数组字符串,cin遇到空格或回车键停止,只能输入没有空格的字符串,当输入中含有空格,则只能输出空格之前的字符;并且cin输入时会自动判断结尾,所以可以cin>>string1>>string2;这样同时输入多个字符串。

1

2

3

4

5

6

7

8

9

10

#include<iostream>

#include<cstring>

using namespace std;

int main()

{

    char a[100];

    cin>>a;    

    cout<<a<<endl;

    return 0;

}

    当输入:hello world 时,遇到回车键输出:hello;

2gets()

针对数组字符串,遇到回车键结束(有时与getchar()配合使用);

1

2

3

4

5

6

7

8

9

10

#include<iostream>

#include<cstdio>

using namespace std;

int main()

{

    char a[100];

    gets(a);

    cout<<a<<endl;

    return 0;

}     

    当输入:hello world 时,遇到回车键输出:hello world;

3cin.get()

针对数组字符串,可以接收空格,遇到回车键结束(有时与getchar()配合使用);

1

2

3

4

5

6

7

8

9

#include<iostream>

using namespace std;

int main()

{

    char a[100];

    cin.get(a,100);

    cout<<a<<endl;

    return 0;

}     

       当输入:hello world 时,遇到回车键输出:hello world;

4getline()

针对string类型,可以接收空格,遇到回车键结束(有时与getchar()配合使用);

1

2

3

4

5

6

7

8

9

10

#include<iostream>

#include<string>

using namespace std;

int main()

{

    string a;

    getline(cin,a);

    cout<<a<<endl;

    return 0;

}

    当输入:hello world 时,遇到回车键输出:hello world;

5cin.getline()

cin.getline()函数与cin.get()函数类似,可以接收空格,遇到回车键结束(有时与getchar()配合使用);cin.getline()是针对数组字符串的,以指定的地址为存放第一个读取的字符的位置,依次向后存放读取的字符,直到读满N-1个,或者遇到指定的结束符为止

1

2

3

4

5

6

7

8

9

#include<iostream>

using namespace std;

int main()

{

    char a[100];

    cin.getline(a,100);

    cout<<a<<endl;

    return 0;

}

       当输入:hello world 时,遇到回车键输出:hello world;

6scanf遇到空格或者回车键结束(有时与getchar()配合使用);

1

2

3

4

5

6

7

8

9

#include <iostream>

using namespace std;

int main()

{

    char a[20];

    scanf("%s",a);

    puts(a);

    return 0;

}

    当输入:hello world 时,遇到回车键输出:hello;

7)让scanf可以接收空格,遇到回车键结束(有时与getchar()配合使用);

这里主要介绍一个参数,%[ ],这个参数的意义是读入一个字符集合。[ ]是个集合的标志,因此%[ ]特指读入此集合所限定的那些字符,比如%[A-Z]是输入大写字母,一旦遇到不在此集合的字符便停止。如果集合的第一个字符是“^”,这说明读取不在“^“后面集合的字符,即遇到”^“后面集合的字符便停止。此时读入的字符串是可以含有空格的。

1

2

3

4

5

6

7

8

9

#include <iostream>

using namespace std;

int main()

{

    char a[100];

    scanf("%[^\n]",a);

    puts(a);

    return 0;

}

    当输入:hello world 时,遇到回车键输出:hello world;

7-2、要加getchar() 的;

1

2

3

4

5

6

7

8

9

10

11

12

13

#include <iostream>

using namespace std;

int main()

{

    int n;

    char a[100];

    cin>>n;

    getchar();//吸收换行符,一定要加 

    for(int i=0;i<n;i++)

        scanf("%[^\n]",a);

    puts(a);

    return 0;

}

    输入:11

    hello world

    输出:hello world;

PS)C/C++关于字符串输入输出空格问题总结原文:C/C++关于字符串输入输出空格问题总结_qq_41555192yl的博客-CSDN博客_c 输入空格

 

 







ASCII码对照表

C++常用开头:

#include<cstdio>

#include<string>

#include<iostream>

using namespace std;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 的string类学习 的相关文章

随机推荐

  • Embedded Linux Conference Europe schedule posted

    From http linuxgizmos com embedded linux conference europe schedule posted The Linux Foundation posted a schedule for Li
  • 2023 年程序员的最佳工作角色

    当今价值数十亿美元的计算机编程市场正受到下一代应用程序和产品的日益普及的推动 例如自动编码 统计计算 数据分析 ML 机器学习 和 AI 人工智能 根据MarketsandMarkets的一项研究 到11年 全球CAC 计算机辅助编码 行业
  • Redis三种集群架构

    一 主从架构 搭建主从结构 从节点配置步骤 1 复制一份redis conf文件 2 将相关配置修改为如下值 port 6380 pidfile var run redis 6380 pid 把pid进程号写入pidfile配置的文件 lo
  • 统计学第九周:参数估计python实现

    统计学第九周 参数估计复习 参数估计 根据从总体中随机取样获得样本 根据取样样本来估计总体分布中参数的过程 方法 估计形式上分 点估计与区间估计 估计的方法有矩法估计 最小二乘法估计 似然估计 贝叶斯估计等等 问题一般有 未知参数的估计量
  • 期货方法(期货方法很简单 只用MACD)

    期货法 在期货市场上 95 的人都是赔钱的 对于期货市场的新手来说 一定要有一个清晰的认识 95 的数字告诉我们什么 它只是告诉我们 在获得稳定的利润之前 我们不应该投入太多的钱 对于初学者来说 投入的钱越多 损失的钱就越多 所以一定要控制
  • 渗透之Aircrack—wifi破解

    环境 kali 工具使用 无线网卡 型号雷凌RT3070L 注意型号选择的使用 不同型号可能导致kali无法识别 步骤总结 1 kali连接外接无线网卡 2 ifconfig查看网卡信息 新出现的wlan0网卡 3 开启网卡监听模式 air
  • 实践积累:用Vue3简单写一个单行横向滚动组件

    目录 效果图 需求分析 实现分析 样式展示分析 变量分析 方法分析 实现步骤 1 实现模板 2 实现css 3 首先获取list 4 页面挂载后监听groupBoxRef的scroll事件并获取当前的滚动位置 5 计算展示的宽度显隐箭头 当
  • 讲透JVM类加载机制,向高手进阶!

    目录 前言 JVM在什么情况下会加载一个类 从实用角度出发 来看看验证 准备和初始化的过程 核心阶段 初始化 类加载器和双亲委派机制 1 前言 先来看一下JVM整体的一个运行原理 我们首先从 java 代码文件 编译成 class 字节码文
  • 运放的虚短和虚断以及分类

    放大器定义 能实现信号 功率放大的器件 称为放大器 英文为Amplifier 以放大器为核心 能实现放大功能的电路组合 称为放大电路 放大器的种类 全部放大器被分为三种 晶体管放大器 运算放大器和功能放大器 晶体管及其放大电路的复杂 从静态
  • 哈希表(散列表)原理详解

    什么是哈希表 哈希表 Hash table 也叫散列表 是根据关键码值 Key value 而直接进行访问的数据结构 也就是说 它通过把关键码值映射到表中一个位置来访问记录 以加快查找的速度 这个映射函数叫做散列函数 存放记录的数组叫做散列
  • 华中科技大学操作系统实验课 实验四

    一 实验目的 1 理解设备是文件的概念 2 掌握Linux模块 驱动的概念和编程流程 3 Windows Linux下掌握文件读写基本操作 二 实验内容 1 编写一个Linux内核模块 并完成模块的安装 卸载等操作 2 编写Linux驱动程
  • MySQL多表查询(8.0)

    文章目录 多表查询 1 多表关系 1 1 一对多 1 2 多对多 1 3 一对一 2 多表查询概述 2 1 数据准备 2 2 概述 2 3 分类 3 内连接 4 外连接 5 自连接 5 1 自连接查询 5 2 联合查询 6 子查询 6 1
  • chatGLM-Windows环境安装

    Windows系统下环境安装 一 概要 不同安装方式 安装python 安装Nvidia驱动 安装cuda与cuddn 安装PyTorch与TensorFlow 二 安装文件 百度网盘链接 https pan baidu com s 1lb
  • Prometheus部分监控项

    Metrics Chinese explanation English explanation node arp entries device的ARP表项 HELP node arp entries ARP entries by devic
  • Kaldi 入门详解

    train mono sh 是音素训练脚本 下面详细介绍各个功能 这部分是训练用参数 调用mono sh时可以通过 name value的方式改变这些参数 nj 4 并行个数 cmd run pl 处理程序 scale opts trans
  • 已知年月日利用公式求星期几模板

    在本文中 我们将使用C语言实现基于已知的年月日计算星期几的公式 这个公式被称为 蔡勒公式 Zeller s Congruence 是一种快速求解星期几的方法 代码分析 首先 我们需要对月份进行调整 如果月份小于3 即1月或2月 则将其视为上
  • 12个医学公共数据库

    01 NCDB 网址 https www facs org quality programs cancer ncdb 美国国家癌症数据库 National Cancer Database NCDB 是经国家认证的 由美国外科医师学会和美国癌
  • DBA_Oracle Table Partition表分区概念汇总(概念)

    一 摘要 有关表分区的一些维护性操作 注 分区根据具体情况选择 表分区有以下优点 1 数据查询 数据被存储到多个文件上 减少了I O负载 查询速度提高 2 数据修剪 保存历史数据非常的理想 3 备份 将大表的数据分成多个文件 方便备份和恢复
  • MySQL5.7保姆级安装教程

    环境 Linux版本 Mysql版本 待安装 CentOS 7 5 7 1 配置YUM源 在MySQL官网中下载YUM源rpm安装包 http dev mysql com downloads repo yum 目前MySQL官网下载的MyS
  • C++ 的string类学习

    一 string类型变量构造赋值方法 1 构造 1 用等号直接赋值S0 2 定义一个空白变量S1 3 定义一个新变量S2 内容完全等于S0 4 定义一个新变量S3 内容是S0从第八个字符开始的三个字符 5 定义一个新变量S4 用括号赋值 和