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()
函数里面,函数就会返回0
或1
;
相类似的函数有很多,头文件都是<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()
函数时,如果str1
与str2
相等的话,函数返回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;
}
输出结果:
如果查找的对象在字符串中有多个,那么函数返回的仅仅是第一个的位置;