C++ 字符串string的常用函数

1.可用于字符串中大小写字母相互转换的函数transform()

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
	//第一步,定义出三个字符串,一个是需要进行大小写转换的字符串; 
	//另外两个是空字符串,用于储存转换后的字符串 ; 
	string str1="abc!ABC.",str2,str3;
	//第二步,调整空字符串的大小,即变成和str1一样大的字符串; 
	str2.resize(str1.size());
	str3.resize(str1.size());
	//第三步,进行转换 ; 
	transform(str1.begin(),str1.end(),str2.begin(),::tolower);
	transform(str1.begin(),str1.end(),str3.begin(),::toupper);
	//第四步,输出转换后的字符串; 
	cout<<str2<<endl<<str3;
    return 0;
}

输出结果:
在这里插入图片描述
上面所描述的是将一个字符串里面某个区间内的大写字母转换为小写字母(小写字母转换为大写字母),然后储存到另一个空字符串里面;如:

transform(str1.begin(),str1.end(),str2.begin(),::tolower);

前面两个参数是指从str1的头部一直到str1的尾部,而第三个参数是指储存在str2中,第四个参数表示的就是你想要把大写变成小写::tolower还是把小写变成大写::toupper;

这时你应该能想到,能否直接在字符串本身储存变换后的字符串,答案是可以的;将第三个参数修改为字符串本身即可,如:

transform(str1.begin(),str1.end(),str1.begin(),::tolower);

这就是直接在字符串本身修改了;

2.用于判断某个字符是否为字母的函数isalpha()

#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main() {
	//第一步,定义字符串; 
	string str="X_e is a boy!";
	//第二步,判断某个元素是否为字母,如果是,输出"yes",否则,输出"no"; 
	if(isalpha(str[0]))
		cout<<"yes"<<endl;
	else
		cout<<"no"<<endl;
    return 0;
}

输出结果:
在这里插入图片描述
如上面的代码所示,只需要把某个字符传到isalpha()函数里面,函数就会返回01
相类似的函数有很多,头文件都是<cctype>如:

isalpha():判断是否为字母;
islower():判断是否为小写字母;
isupper():判断是否为大写字母;
isalnum():判断是否为字母或数字;
isspace():判断是否为空格;

3.用于截取字符串中的一个子串的函数substr()

#include <iostream>
#include <string>
using namespace std;
int main() {
	//第一步,定义字符串; 
	string str1="X_e is a boy!",str2;
	//将str1中的一个子串截取下来,储存在str2中; 
	str2=str1.substr(9,3);
	cout<<str2<<endl;
    return 0;
}

输出结果:
在这里插入图片描述
substr()函数有两个参数,第一个参数指的是你要截取的子串的第一个元素在源字符串的下标,第二个参数就是你要截取的字符串的长度;要注意的是,str1经过截取后,str1是不会发生变化的;

4.用于将整型数字转换成字符串的函数sprintf()

#include <iostream>
#include <string>
using namespace std;
int main() {
	char str[10];
	int nums=12345678;
	//将nums这一个数一位一位地映射到字符数组str里面
	sprintf(str,"%d",nums);
	cout<<str;
    return 0;
}

输出结果:
在这里插入图片描述
要注意的是,这里面的str并不能是string类型的字符串,而要是字符数组;

5.用于删除字符串中的某一段erase()

#include <iostream>
#include <string>
using namespace std;
int main() {
	string str="abcdefg";
	str.erase(2,3);
	cout<<str;
    return 0;
}

输出结果:
在这里插入图片描述
erase()函数的两个参数,第一个参数是指要删除的那一段的第一个字符在源字符串的下标,第二个参数是要删除的那一段的长度;

6.用于比较两字符串的函数compare()

#include <iostream>
#include <string>
using namespace std;
int main() {
	string str1="abc",str2="acb";
	cout<<str1.compare(str2);
    return 0;
}

输出结果:
在这里插入图片描述
在使用compare()函数时,如果str1str2相等的话,函数返回0,如果str1>str2则返回1,如果str1<str2,则返回-1;比较字符串的方法就是按照字符的ASCII码值来比较的;

7.用于查找字符串中某个字符或某个子串的位置的函数find()

#include <iostream>
#include <string>
using namespace std;
int main() {
	string str1="abcdefgbh";
	cout<<str1.find('b')<<endl;
	cout<<str1.find("bh");
    return 0;
}

输出结果:
在这里插入图片描述
如果查找的对象在字符串中有多个,那么函数返回的仅仅是第一个的位置;

猜你喜欢

转载自blog.csdn.net/qq_40936036/article/details/86551177