首页 > 其他分享 >字符串

字符串

时间:2023-02-24 15:58:13浏览次数:35  
标签:string int s1 pos char 字符串

字符串赋值(C字符串)

将字符串b赋值给字符串a: =:定义时赋值,b必须是字符串变量。

 strcpy(char *a, char *b) :b须是字符串常量或C字符串。

例:

char a[20], b[20] = "Hello";
strcpy(a, b);       //a = "Hello"; 
strcpy(a, "OK");    //a = "OK"

 

字符串赋值(string)

给string型变量赋值:=

 a=b :b可以是任意类型字符串(字符串常量、C字符串或string)。

例:

string a, b("Hello"); 
char c[10] = "World";
a = b;       //a = "Hello"
a = c;       //a = "World"
a = "OK";  //a = "OK"

 

字符串连接(C字符串)

将字符串b接到字符串a后面:

 strcat(char *a, char *b) :b 须是字符串常量或C字符串。

例:

char a[20] = "Hello", b[20]= ", world!";
strcat(a, b);     //"Hello, world!"
strcat(a, "OK");   //a = "Hello, world!OK"

 

字符串连接(string)

将字符串a和字符串b前后连接:+、+=

 a+b 或 a+=b :a和b须一个是string型,另一个任意类型,连接结果是string型。

 例:

string a(""), b("Hello"); 
char c[10] = ", World!";
string d = "Hello" + a + c;   //d = "Hello, World!"
a += b;     //a = "Hello"
a += c;     //a = "Hello, World!"
a += "OK";   //a = "Hello, World!OK"

 

字符串比大小(C字符串)

C字符串比较函数:strcmp()

 strcmp(char *a, char *b) :若a=b,返回0;若a>b,返回正整数;若a<b,返回负整数。

例:

char a[10] = "abc", b[10] = "abcd";
int n = strcmp(a, b);
if (n > 0) cout << ">";
else if (n < 0) cout << "<";
else cout << "=";

 

字符串比大小(string)

string字符串比较运算符:<、<=、==、>、>=、compare compare方法返回一个整数,参考strcmp()。

例:

string a("abc"), b("abcd");
if (a > b) cout << ">";
else if (a < b) cout << "<";
else cout << "=";    

string a("abc"), b("abcd");
int n = a.compare(b);
if (n > 0) cout << ">";
else if (n < 0) cout << "<";
else cout << "=";

 

查找字符(C字符串)

在C字符串中查找字符:strchr()

 strchr(char *a, char ch) :返回a[ ]中左起第一个ch的地址,若a[ ]中没有ch则返回NULL(0)。

例:

char a[] = "abcbd";
cout << (int)strchr(a, 'b') << endl;    //地址
cout << (int)strchr(a, 'e') << endl;    //0
cout << strchr(a, 'b') - a << endl;        //1

 

查找字符串(C字符串)

在C字符串中查找字符串:strstr()

 strstr(char *a, char *b) :返回a[ ]中左起第一个b[ ]的地址,若a[ ]中没有b[ ]则返回NULL(0)。

例:

char a[] = "abcbd", b[] = "bc", c[] = "dc";
cout << strstr(a, b) - a << endl;    //1
cout << strstr(a, c) - a << endl;    //-a的地址

 

查找字符或字符串(string)

在string字符串中查找字符或字符串:find。

find返回位置,是string::size_type(unsigned int)类型,若找不到返回string::npos (unsigned int最大值,表示无穷大)。

find() 有两种格式:

 a.find(char ch, n = 0) :在a中查找字符ch,返回a中左起第一个ch的下标。

 a.find(string b/char *b, n = 0) :在a中查找字符串b,返回a中左起第一个b中b第一个字符的下标。

rfind():从右往左查找,使用方法与find相同。

(n:从第n个元素开始查找,n缺省值为0,表示从头开始查找)

string a("abcdabce"), b("bc");
char c[10] = "bc", ch = 'd';
string::size_type pos;
    //在string中查找string字符串
pos = a.find(b);        //pos = 1
pos = a.find(b, 2);        //pos = 5
    //在string中查找char数组字符串
pos = a.find(c);        //pos = 1
pos = a.find(c, 2);        //pos = 5
    //在string中查找字符
pos = a.find(ch);        //pos = 3
pos = a.find(ch, 5);    //pos = string::npos
    //反向查找
pos = a.rfind(b);        //pos = 5
pos = a.rfind(b, 2);    //pos = 1

 

截取子串

string成员函数: string substr(int n, int m) 

n:子串起始位置,默认从0开始

m:子串长度,默认为string::npos(无穷大),表示到字符串结束。

substr只返回子串,不修改原字符串。

例:

string s1 = "this is ok";
string s2 = s1.substr(2, 4);  // s2 = "is i"
s2 = s1.substr(2);          // s2 = "is is ok"

 

删除子串

string成员函数: string erase(int n, int m) 

功能:从位置n开始,删除连续m个字符

n默认等于0,m默认为string::npos

函数直接修改原字符串,并返回修改后的字符串。

例:

string s1("Real Steel");
s1.erase(1, 3);      //s1 = "R Steel"
s1.erase(5);          //s1 = "R Ste"

 

插入字符串

string成员函数:insert()

 string insert(int n, string b/char *b)  :在位置n插入字符串b

 string insert(int n, int m, char ch) :在位置n插入m个字符ch

函数直接修改原字符串,并返回修改后的字符串。

例:

string s1("Limitless"), s2("00");
s1.insert(2, "123");     //s1="Li123mitless"
s1.insert(3, s2);         //s1="Li10023mitless"
s1.insert(3, 2, 'X');    //s1="Li1XX0023mitless"

 

替换子串

string成员函数:replace()

 string replace(int n, int m, string b/char* b)  :将子串(n,m)替换为b

 string replace(int n, int m, string b/char* b, int x, int y)  :将子串(n,m)替换为b的子串(x,y)

 string replace(int n, int m, int k, char ch) :将子串(n, m)替换为k个ch

函数直接修改原字符串,并返回修改后的字符串。

例:

string s1("Real Steel"), s2("4321");
s1.replace(1, 3, "1234");        //s1 = "R1234 Steel"
s1.replace(1, 3, s2);        //s1 = "R43214 Stell" 
s1.replace(2, 4, "abcd", 1, 2);    //s1 = "R4bc Stell" 
s1.replace(2, 2, s2, 1, 3);    //s1 = "R4321 Stell"
s1.replace(1, 4, 2, '0');        //s1 = "R00 Stell"

 


 

呃,我好像只学会了这么多?

 

标签:string,int,s1,pos,char,字符串
From: https://www.cnblogs.com/WBCMZ/p/17151737.html

相关文章

  • Redis SET命令用于在Redis键中设置一些字符串值。
    RedisSET命令用于在Redis键中设置一些字符串值。返回值如果在键中设置了值,返回简单字符串回复:OK。如果值没有设置则返回Null。语法下面是RedisSET命令的基本语法......
  • P3989 [SHOI2013]阶乘字符串 题解
    由于一些不可抗拒的原因,\(n\ge22\)无解。那么只用考虑\(n\le21\)的情况即可。由于\(n\)的范围缩小,导致状压又可以重新使用,所以考虑状压。设\(f_i\)为\(i\)中......
  • 【YBT2023寒假Day14 C】字符串题(SAM)(树链剖分)(线段树)
    字符串题题目链接:YBT2023寒假Day14C题目大意对于一个字符串S定义F(S)是fail树上除了0点其它点的深度和。G(S)是S每个子串S'的F(S')之和。然后一个空......
  • STATA:字符串包含学习笔记
    keep序号事业单位主管部门举办单位岗位类别岗位等级岗位性质岗位名称招聘人数学历要求学位要求大学专科专业要求大学本科专业要求研究生专业要求其他条件......
  • 考研算法辅导课笔记:第十五讲--字符串处理,递归和背包
    比较轻松的一节课字符串处理。不需要用到算法,只是考察对于字符串处理的API是否熟悉。递归。经典的问题,把每一个问题划归成若干相同的子问题。背包问题。典型的dp问题,......
  • 代码随想录算法Day09 | kmp算法理论基础知识,28. 实现 strStr() ,459.重复的子字符串
    kmp算法理论基础知识核心思想利用已经部分匹配的结果而加快模式串的滑动速度!且主串S的指针i不必回溯!相较于BF算法的O(N*M),KMP算法时间复杂度可提速到O(N+M)!用处K......
  • ES6-ES11 模板字符串
    视频<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>......
  • 记录将Base64字符串转化为图片遇到的问题
    今天通过与别人写的api交互,获取到了一个原为图片的base64字符串,在网上找到了相互转换的方法,但是在转化时,报出了“输入不是有效的Base64字符串,因为它包含非base64......
  • 【字符串】KMP算法
    KMP算法(Knuth-Morris-Pratt算法)是一个著名的字符串匹配算法,效率很高。例题28.找出字符串中第一个匹配项的下标-力扣(Leetcode)BF(Brute-Force)算法:暴力解法BF算法采用......
  • Python字符串方法
    31个必备的Python字符串方法▍1、Slicingslicing切片,按照一定条件从列表或者元组中取出部分元素(比如特定范围、索引、分割值)s='hello's=s[:]print(s)#......