字符串方法
string 字符串的增删改查
插入字符串
- 在原串下标为 pos 的字符前插入字符串
s1.insert(pos,s2)
在 s1 字符串的下标 pos 的位置上插入字符串 s2
s1.insert(pos,s2) 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s1 = "oldmoon";
string s2 = "welcome ";
//在原s1字符串的下标0的位置上插入字符串s2
s1.insert(0,s2);
cout << "s1:" << s1 << endl;
return 0;
}
运行结果:
c
s1:welcome oldmoon
建议
你们试试其他位置呦~
- 在原串下标为 pos 的字符前插入 n 个字符 char
s1.insert(pos,n,char) 在 s1 字符串的下标 pos 的位置上插入 n 个字符 char
s1.insert(pos,n,char) 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s1 = "oldmoon";
char c = 'h';
//在原s1字符串的下标0的位置上插入3个字符h
s1.insert(0,3,c);
cout << "s1:" << s1 << endl;
return 0;
}
运行结果:
c
s1:hhholdmoon
建议
你们试试其他位置呦~
- s2 从下标为 pos2 开始数的 len 个字符插在 s1 串下标为 pos1 的字符位置上 s1.insert(pos1,s2,pos2,len)
s1.insert(pos1,s2,pos2,len) 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s1 = "oldmoon";
string s2 = "hello,world" ;
//将字符串s2从下标为0的h开始数6个字符,分别是hello, ,插入s1串的下标为0的字符位置上
s1.insert(0,s2,0,6);
cout << "s1:" << s1 << endl;
return 0;
}
运行结果:
c
s1:hello,oldmoon
建议
你们试试其他位置呦~
删除字符串
- 首先是删除该位置的字符
s.erase(string:: iterator it);//删除 it 位置的字符删除该位置的字符 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s1 = "oldmoon";
//删除第4个位置上的字符
s1.erase(s1.begin() + 4);
cout << "s1:" << s1 << endl;
return 0;
}
运行结果:
c
s1:oldmom
分析
s1.begin()函数返回一个迭代器,指向字符串的第 1 个元素,s1.begin() + 4 指向字符串中的第 4 个元素。
- 删除一段的内容
s.erase(s.first,s.last)
删除 first-last 之间的所有元素删除一段的内容 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s1 = "oldmoon";
//删除从第3个位置开始到最后的中间所有字符串
s1.erase(s1.begin() + 3,s1.end());
cout << "s1:" << s1 << endl;
return 0;
}
运行结果:
c
s1:old
注意
默认第 0 个位置开始数起!
- 删除某位置后一段长度的元素 s.erase(int a,int n)
删除某位置后一段长度的元素 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s1 = "oldmoon";
//删除从下标3开始的4个字符
s1.erase(3,4);
cout << "s1:" << s1 << endl;
return 0;
}
运行结果:
c
s1:old
注意
这里的参数是 int 类型,可以对比下前面的删除方式~
可以挑选一种你喜欢的方式呦~
提取子字符串
s.substr(pos, len)
在 s 字符串中提取从 pos 开始的 len 个字符,pos 默认是 0,len 默认值是 s.size()-pos,即不加参数会默认拷贝整个 s。
提取子字符串 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s1 = "oldmoon";
//在s1字符串中提取整个字符串赋值给s2
string s2 = s1.substr();
//在s1字符串中提取从下标3开始长度为4的子字符串赋值给s3
string s3 = s1.substr(3,4);
////在s1字符串中提取从下标2开始到尾的字符串赋值给s4
string s4 = s1.substr(2);
cout << "s1:" << s1 << endl;
cout << "s2:" << s2 << endl;
cout << "s3:" << s3 << endl;
cout << "s4:" << s4 << endl;
return 0;
}
运行结果:
c
s1:oldmoon
s2:oldmoon
s3:moom
s4:dmoom
建议
快去试试吧~
字符串查找
find() 函数用于在 string 字符串中查找子字符串出现的位置,返回值为第一次出现子串的下标值,找不到返回-1。
字符串查找 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s1 = "oldmoon";
int pos = s1.find("mo");
cout << pos << endl;
pos = s1.find("123");
cout << pos << endl;
return 0;
}
运行结果:
c
3
-1
分析
第一次出现"mo"这个子串的下标是 3,所以打印 3
s1 串中无子串"123",所以打印-1
string 其他常用函数
常用函数
- size()/length()
- substr()
- replace()
- atoi()
- tolower()
- toupper()
- size()/length() 返回字符的个数
字符串查找 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s = "oldmoon";
cout << s.size() << endl;
cout << s.length() << endl;
return 0;
}
运行结果:
c
6
6
- substr(num) 返回从 num 下标开始的所有字符,包括 num 下标对应的字符
substr(num) 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s1 = "oldmoon";
string s2 = s1.substr(3);
cout << s2 << endl;
return 0;
}
运行结果:
c
moon
分析
提取了 s1 字符串中从下标 3 开始到末尾得字符串给了 s2
- substr(a,b) 返回从 a 下标开始的 b 个字符,包括 a 下标对应的字符
substr(a,b) 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s1 = "oldmoon";
string s2 = s1.substr(3,4);
cout << s2 << endl;
return 0;
}
运行结果:
c
moon
分析
提取了 s1 字符串中从下标 3 开始得 4 个字符给了 s2
- replace(pos,num,str) 从下标 pos 开始得 num 个字符替换成 str
replace(pos,num,str) 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s1 = "hello,oldmoon";
string s2 = s1.replace(0,5,"welcome");
cout << s2 << endl;
return 0;
}
运行结果:
c
welcome,oldmoon
分析
s1 字符串中下标 01 是'h',往后 5 个字符即“hello”,替换成“welcome”
- stoi(str) 将数字字符串转成对应整数
stoi(str) 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
cout << stoi("1") + stoi("1") << endl;
return 0;
}
运行结果:
c
12345
分析
将字符串“12345”转成数字 12345,在字符串操作中还是很重要得~
- tolower() 将大写字母转成小写
tolower() 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
char s = 'A' ;
printf("%c",tolower(s));
return 0;
}
运行结果:
c
a
- toupper() 将小写字母转成大写
toupper() 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
char s = 'a' ;
printf("%c",toupper(s));
return 0;
}
运行结果:
c
A