首页 > 编程语言 >C++中string字符串的基础操作,学习

C++中string字符串的基础操作,学习

时间:2024-11-10 20:18:40浏览次数:1  
标签:string int str2 str1 C++ 字符串 world

string 字符串

常用函数

  • substring()
  • string.length()&&string.size()
  • string.find()
  • string.replace()
  • string.substr()

string初始化和声明

#include<bits/stdc++.h>
using namespace std;
	int main(){
        string str1; //空字符串
        string str2="hello, world";  //注意中间有空格和‘,’逗号
        //通过str2赋值给str3
        string str3=str2; 
        //初始化重复的字母
        stirng str4(5,'C'); // str4="CCCCC"
        return 0;       
    }

获取字符串的长度

string.length()&&string.size()

#include<bits/stdc++.h>
using namespace std;
	int main(){
       string str1="hello,, world";
        int len=str1.length();
        int len1=str1.size();
        cout<<len<<len1; //输出13 包括2个逗号和一个空格
        return 0;       
    }

length()size()返回的是无符号整数(0,1,2...) 使用时尽量用 (int)str1.length()进行强转

字符串查找

string.find()

#include<bits/stdc++.h>
using namespace std;
	int main(){
       string str1="hello,, world";
       int x=str1.find(" world"); //用int 替代 size_t (无符合整数)
	   cout<<x; //输出7 空格的下标是7
       int y=str1.find(" 2world");
       cout<<y;//输出的-1;
             
    }

找到相应的子串会返回子串中第一个char在字符串中的下标,如果没有找到会返回 -1

字符串拼接

+ || append()

#include<bits/stdc++.h>
using namespace std;
	int main(){
       string str1="hello";
       string str2="world"
       string str3(5,'Z');
       // 用+进行拼接
       string re1=str1+str2+str3;
       cout<<re1; //输出helloworldZZZZZ
       //用append()
       string re2=str1.append(str2).append(str3).append("!");
       cout<<re2; //输出helloworldZZZZZ!
    }

**+ 拼接时可用char拼接,但在append()中的参数只能是string类型,不能是char **

string re1=str1+str2+str3+'!'+"2313";
cout<<re1;//输出helloworldZZZZZ!2313
string re2=str1.append(str2).append(str3).append('!');//append('!')会报错

字符串替换

string.replace()

#include<bits/stdc++.h>
using namespace std;
	int main(){
       string str1="hello,, world";
       str1.replace(7,3,"333444");//7代表从下标为7的元素开始‘ ’,3代表要替换的长度(” wo“)
       cout<<str1;//输出 hello,,333444rld
    }

提取子字符串

substr()

#include<bits/stdc++.h>
using namespace std;
	int main(){
       string str1="hello,, world";
       string re1=str1.substr(2,4); //2表示从下标2开始,4表示提取子字符串的长度;
       cout<<re1;//输出 llo,
    }

字符串比较

compare()

#include<bits/stdc++.h>
using namespace std;
	int main(){
       string str1="hello,,world";
       string str2="heooll";
       int in=str1.compare(str2); // 比较到下标为2时,'l'<'o' 所以返回-1
       cout<<in;//输出-1 str1比str2小
       
       // 用<,>,== 来比较字符串大小
       int re1=str1<str2;
       int re2=str1==str2;
       int re3=str1>str2;
       cout<<re1<<re2<<re3;//输出 1 0 0
        
    }

字符串的比较不是越长就越大,比较时会从第一个元素进行一一对应的比较,如果有不相同的元素就会马上得出结果;

re=str1.compare(str2)

  • re==0 字符串相等
  • re<0 str1较小
  • re>0 str2较大

用 <,>,== 比较 re=str1<str2

  • re=1 str1小于str2
  • re=0 str1不小于str2

标签:string,int,str2,str1,C++,字符串,world
From: https://www.cnblogs.com/zpa666/p/18538418

相关文章

  • 哈希算法(开散列)- 支持string(this指针指向的理解)
    一.开散列的定义闭散列(开放地址法)的缺点是线性探测和二次探测都会存在哈希冲突的问题,数据越多冲突就会越明显,导致查询数据的时间复杂度大幅度提升个人思路:创建一个指针数组,当某个位置要插入一个数据,就再创建一个数组,指针数组对应位置的指针指向此数组的首元素(数组地址),......
  • C++实现命令行文本计数统计程序
    附上一位博主写的关于git的使用(个人感觉非常完整,对新手很友好):Git及Tortoisegit下载安装及使用详细配置过程_tortoisegit下载远程代码-CSDN博客 Gitee地址:https://gitee.com/wnmdsqwnhkmc/second-assignment注:本文并不包含主函数,完整代码请移步Gitee路径:[项目>>ConsoleAppl......
  • C++中的RAII与内存管理
    C++中的RAII与内存管理引言资源获取即初始化(ResourceAcquisitionIsInitialization,简称RAII)是C++编程中一种重要的编程范式,它通过对象生命周期来管理资源,确保资源在不再需要时能够被正确释放。本文将从C++的内存布局入手,逐步深入到栈区、堆区的概念,new和delete的操作原理,最终......
  • 浅谈C++(2)
    hi,大家好,我们又见面了今天我继续来讲C++2:变量变量是什么?变量像一个盒子,里面的内容是可以更改的变量的定义:inta;如上代码段,是定义了一个为整数类型的变量a你可以使用cin>>a;来使它变成另一个值解释int是一种变量类型,只储存整数a是变量名;分号,分隔每一......
  • 找质数程序C++
    找质数程序C++今天看报纸时看到目前算出来最大的质数是2136279841-1于是自编了一串代码,分享给大家(ps:怕电脑冒烟的慎用)#include<iostream>usingnamespacestd;intmain(){ for(longlongi=9574463;;i+=2){ if(i%2!=0&&i%3!=0&&i%5!=0&&i%7!=0&&i%......
  • c++程序设计基础实验三
    任务1:源代码:button.hpp:#pragmaonce#include<iostream>#include<string>usingstd::string;usingstd::cout;//按钮类classButton{public:Button(conststring&text);stringget_label()const;voidclick();priva......
  • C语言字符串和十六进制的相互转换方式
    C语言字符串和十六进制的相互转换方式-我就叫宋帅呀-博客园C语言的字符串操作并不像java,Csharp那样提供直接的方法,简单粗暴。所以,在转换的时候往往费力费时,近日做项目正好用到和java程序通讯,java发送过来的数据是十六进制数字组成的字符串,解析的时候颇费心思才算完成,所以......
  • C++17 多态内存管理 pmr
    C++17多态内存管理pmr概念C++17开始,增加特性PolymorphicMemoryResources多态内存资源,缩写PMR。提供新的内存分配策略,更灵活地控制内存的分配与回收——适用于嵌入式和高并发服务器场景。对内存资源的抽象抽象基类std::pmr::memory_resource定义了用于内存的分......
  • C++STL容器适配器——stack和queue
    目录一.stack介绍及使用1.stack介绍2.stack的使用3.模拟实现stack二.queue的介绍及使用1.queue介绍2.queue的使用3.模拟实现queue三.deque的了解1.deque的介绍2.deque的缺陷四.priority_queue的介绍及使用1.priority_queue介绍2.priority_queue的使用3.模拟实......
  • C/C++语言基础--C++模板与元编程系列五(可变惨模板,形参包展开,折叠表达式)
    本专栏目的更新C/C++的基础语法,包括C++的一些新特性前言模板与元编程是C++的重要特点,也是难点,本人预计将会更新10期左右进行讲解,这是第五期,讲解可变惨模板,形参包展开,折叠表达式等,本人感觉这一部分内容还是比较复杂的;C语言后面也会继续更新知识点,如内联汇编;欢迎收藏+关......