登录

方法

字符串方法

string 字符串的增删改查

插入字符串

  • 在原串下标为 pos 的字符前插入字符串

s1.insert(pos,s2)

在 s1 字符串的下标 pos 的位置上插入字符串 s2

#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;
}

运行结果:

s1:welcome oldmoon

  • 在原串下标为 pos 的字符前插入 n 个字符 char

s1.insert(pos,n,char)

在 s1 字符串的下标 pos 的位置上插入 n 个字符 char

#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;
}

运行结果:

s1:hhholdmoon

  • s2 从下标为 pos2 开始数的 len 个字符插在 s1 串下标为 pos1 的字符位置上

s1.insert(pos1,s2,pos2,len)

#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;
}

运行结果:

s1:hello,oldmoon

删除字符串

  • 首先是删除该位置的字符

s.erase(string:: iterator it);//删除 it 位置的字符

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1 = "oldmoon";
	//删除第4个位置上的字符
	s1.erase(s1.begin() + 4);
	cout << "s1:" << s1 << endl;
    return 0;
}

运行结果:

s1:oldmom
分析

s1.begin()函数返回一个迭代器,指向字符串的第 1 个元素,s1.begin() + 4 指向字符串中的第 4 个元素。

  • 删除一段的内容

s.erase(s.first,s.last)

删除 first-last 之间的所有元素

#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;
}

运行结果:

s1:old
警告

默认第 0 个位置开始数起!

  • 删除某位置后一段长度的元素

s.erase(int a,int n)

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1 = "oldmoon";
	//删除从下标3开始的4个字符
	s1.erase(3,4);
	cout << "s1:" << s1 << endl;
    return 0;
}

运行结果:

s1:old

提取子字符串

s.substr(pos, len)

在 s 字符串中提取从 pos 开始的 len 个字符,pos 默认是 0,len 默认值是 s.size()-pos,即不加参数会默认拷贝整个 s。

#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;
}

运行结果:

s1:oldmoon
s2:oldmoon
s3:moom
s4:dmoom

字符串查找

find() 函数用于在 string 字符串中查找子字符串出现的位置,返回值为第一次出现子串的下标值,找不到返回-1。

#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;
}

运行结果:

3
-1

string 其他常用函数

常用函数

size()/length()

substr()

replace()

stoi() / stoll()

toString()

tolower()

toupper()

  • size()/length()

返回字符的个数

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s = "oldmoon";
	cout << s.size() << endl;
	cout << s.length() << endl;
    return 0;
}

运行结果:

6
6

  • substr(num)

返回从 num 下标开始的所有字符,包括 num 下标对应的字符

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1 = "oldmoon";
	string s2 = s1.substr(3);
	cout << s2 << endl;
    return 0;
}

运行结果:

moon

  • substr(a,b)

返回从 a 下标开始的 b 个字符,包括 a 下标对应的字符

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1 = "oldmoon";
	string s2 = s1.substr(3,4);
	cout << s2 << endl;
    return 0;
}

运行结果:

moon

  • replace(pos,num,str)

从下标 pos 开始得 num 个字符替换成 str

#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;
}

运行结果:

welcome,oldmoon

  • stoi(str)

将数字字符串转成对应整数

#include<bits/stdc++.h>
using namespace std;
int main()
{
    cout << stoi("1") + stoi("1") << endl;
    return 0;
}

运行结果:

12345
提示

将字符串“12345”转成数字 12345,在字符串操作中还是很重要的!

如果想转为long long,应该使用stoll()

  • to_string(int)

将整数转为字符串

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int num = 753;
    string s = to_string(num) 
    cout << s << endl;
}

运行结果

753

  • tolower()

将大写字母转成小写

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char s = 'A';
	printf("%c",tolower(s));
    return 0;
}

运行结果:

a

  • toupper()

将小写字母转成大写

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char s = 'a';
	printf("%c",toupper(s));
    return 0;
}

运行结果:

A

登录