• C++中string的用法


    博主简介:Hello大家好呀,我是陈童学,一个与你一样正在慢慢前行的人。
    博主主页:@陈童学哦
    所属专栏:C++STL

    在这里插入图片描述

    前言:Hello各位小伙伴们好!欢迎来到本专栏C++STL的学习,本专栏旨在帮助大家了解并熟悉使用C++中的STL,C++中的STL(标准模板库)是相当好用的,🍉🍉🍉所以大家赶紧订阅一起学起来叭!那么话不多说接下来就进入本文C++中string的学习。

    ⭐一、string的简介

    string的中文译为字符串,是C++在C语言中的char字符类型上的延伸。C++中封装有许多关于string的函数可以方便我们完成一些关于字符串的操作。而且string的空间大小是动态变化的,可以减小不必要空间的浪费。

    ⭐二、string的常用输入方法

    • 1.通过cin输入(遇到空格停止输入)
      例:
    #include
    using namespace std;
    int main()
    {
    	string s1,s2; //定义字符串s1和s2 
    	cin>>s1>>s2;  //通过cin输入 
    	cout<<"字符串s1为:"<<s1<<endl; //输出字符串s1 
    	cout<<"字符串s2为:"<<s2<<endl; //输出字符串s2 
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    输入:

    ctx 666
    
    • 1

    运行结果:

    字符串s1为:ctx
    字符串s2为:666
    
    • 1
    • 2
    • 2.通过getline输入(遇到换行符时停止输入)
      例:
    #include
    using namespace std;
    int main()
    {
    	string s1,s2; //定义字符串s1和s2 
    	getline(cin,s1); //通过getline输入 
    	getline(cin,s2);	
    	cout<<"字符串s1为:"<<s1<<endl; //输出字符串s1 
    	cout<<"字符串s2为:"<<s2<<endl; //输出字符串s2 
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    输入:

    ctx1 666
    ctx2 777
    
    • 1
    • 2

    运行结果:

    字符串s1为:ctx1 666
    字符串s2为:ctx2 777
    
    • 1
    • 2

    需要注意的是: 通过cin输入会屏蔽掉前置换行和空格,简单来讲就是通过cin输入得到的不可能是空字符串。而getline不会屏蔽掉换行符,但可能会使得输入出现一些出乎意料的错误。

    ⭐三、string中常用的成员函数

    string中的一些常用函数:

    size()//返回字符串的长度
    insert()//插入字符串
    append()//添加字符串
    erase()//删除指定字符,时间复杂度O(n),n为字符串长度
    clear()//清空字符串
    substr()//截取某段字符串
    back()//获取最后一个字符
    pop_back()//删除最后一个字符,时间复杂度O(1)
    empty()//判断字符串是否为空
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    string中的一些功能函数:

    to_string() //将基本类型的值转换为字符串
    //需要注意的是,转换char类型时是将其转换为它的ASCII值
    stoi() //将字符串类型转换为int类型
    atoi() //与stoi的作用相同,区别就是stoi()处理string类型,atoi()处理char类型,常在C语言中使用
    stol()//将字符串类型转换为long类型
    stoll()//将字符串类型转换为long long类型
    stof()//将字符串类型转换为float类型
    stod()//将字符串类型转换为double类型
    stold()//将字符串类型转换为long double类型
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    ⭐四、string的大小比较

    string之间的比较是通过每个字母的ASCII码逐一进行比较的
    例:

    #include
    using namespace std;
    int main()
    {
    	string s1,s2; //定义字符串s1和s2 
    	s1="abc";
    	s2="acb";
    	//s1和s2进行大小比较时,先比较各自的第一个字符, 
    	//第一个字符都为a相等,s1的第二个字符为b
    	//s2的第二个字符为c,而b的ASCII码小于c
    	//所有字符串s1小于s2 
    	if(s1==s2)
    	{
    		cout<<s1<<"="<<s2<<endl;
    	}
    	else if(s1>s2)
    	{
    		cout<<s1<<">"<<s2<<endl;
    	}
    	if(s1<s2)
    	{
    		cout<<s1<<"<"<<s2<<endl;
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    运行结果:

    abc<acb
    
    • 1

    ⭐五、string的遍历方法

    • 1、通过下标遍历
      例:
    #include
    using namespace std;
    int main()
    {
    	string s="ctx666";
    	for(int i=0;i<s.size();i++)
    	{
    		cout<<s[i];
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 2、通过foreach遍历
    #include
    using namespace std;
    int main()
    {
    	string s="ctx666";
    	for(char c:s)
    	{
    		cout<<c;
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    注意:通过foreach遍历简单方便,但是它有一个弊端就是不能够逆序遍历。

    ⭐六、string的真题巩固

    下面是PTA中团体程序设计天梯赛-练习集中的一道L1阶题,题目考验更多的是逻辑性的点,难度不大,各位小伙伴们可以拿来练练手巩固string的相关知识。

    下方为题目链接!!!!!!!!

    --------------------L1-058 6翻了--------------------
    题目详情:
    在这里插入图片描述
    “666”是一种网络用语,大概是表示某人很厉害、我们很佩服的意思。最近又衍生出另一个数字“9”,意思是“6翻了”,实在太厉害的意思。如果你以为这就是厉害的最高境界,那就错啦 —— 目前的最高境界是数字“27”,因为这是 3 个 “9”!

    本题就请你编写程序,将那些过时的、只会用一连串“6666……6”表达仰慕的句子,翻译成最新的高级表达。

    输入格式:
    输入在一行中给出一句话,即一个非空字符串,由不超过 1000 个英文字母、数字和空格组成,以回车结束。

    输出格式:
    从左到右扫描输入的句子:如果句子中有超过 3 个连续的 6,则将这串连续的 6 替换成 9;但如果有超过 9 个连续的 6,则将这串连续的 6 替换成 27。其他内容不受影响,原样输出。

    输入样例:
    it is so 666 really 6666 what else can I say 6666666666
    输出样例:
    it is so 666 really 9 what else can I say 27

    AC代码:

    #include
    using namespace std;
    int main(){
    	string s;
    	getline(cin,s);
    	int i,num=0,j;
    	for(i=0;i<s.size();i++)
        {
    		if(s[i]=='6')
            {
    			num++;
    		}
            else
            {
    			if(num<=3)
                {
    				for(j=0;j<num;j++)
                    {
    					printf("6");
    				}
    			}
                else if(num>3 && num<=9)
                {
    					printf("9");
    			}
                else
                {
    				printf("27");
    			}
    			num=0;
    			cout<<s[i];
             }
    	}
    	if(num>0){
    		if(num<=3)
            {
    			for(j=0;j<num;j++)
                {
    				printf("6");
    			}
    		}
            else if(num>3 && num<=9)
            {
    				printf("9");
    		}
            else
            {
    			printf("27");
    		}
    	}
    	return 0;
    } 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53

    ⭐七、写在最后

    OK本文的学习就到此结束啦,希望本文可以帮助到各位有需要的小伙伴们喔,也希望各位小伙伴们不要吝惜手里的三连哦!❤️❤️❤️

    💕 回头看,轻舟已过万重山,向前看,前路漫漫亦漫漫。

    🍁🍁🍁那么我们下期再见!拜拜ヾ(•ω•`)o
    在这里插入图片描述

  • 相关阅读:
    Java面试题
    go context 包
    系统架构设计:12 论软件维护方法及其应用
    【React】Sigma.js框架网络图-入门篇
    java计算机毕业设计消防网站源码+系统+数据库+lw文档+mybatis+运行部署
    内存概念,进程运行的基本原理(指令,逻辑地址与物理地址的转换,程序运行的过程)
    融云视频会议,助力政企高效协同
    Java的基础框架之SpringMvc第一讲(SpringMvc请求与响应以及REST风格,Postman的使用)
    【组件传参】返回e和传入的参数 - uniapp中this.$emit回传多个值 - uniapp组件中带事件参数event和多个参数
    Android | WMS 解析(一)
  • 原文地址:https://blog.csdn.net/H1727548/article/details/130840342