上篇介绍了STL中的迭代器和vector,这次来介绍C++在STL中加入的string类型,对字符串常用的需求功能进行了封装,使得操作起来方便。
使用时需要加上#include<string>头文件
字符串定义
定义时于定义其他变量是一样的
其他变量定义:
int a;
字符串变量定义:
string st;
字符串初始化
初始化时也与其他变量一样直接进行赋值就行
st="abcd";或者string st="abcd";
字符串输入输出
字符串输出
输出时可以直接用cout输出:
#include<iostream> #include<string> using namespace std; int main() { string a; a = "abcd"; cout << a; return 0; }
结果如下
字符串输入
在需要输入的时候,也可以直接用cin来输入
#include<iostream> #include<string> using namespace std; int main() { string a; cin >> a; cout<<a; return 0; }
结果如下
字符串访问
字符串访问的时候于数组的访问是一样的可以用下标来访问
#include<iostream> #include<string> using namespace std; int main() { string a; cin >> a; cout << a[2]; return 0; }
字符串拷贝=
字符串复制,拷贝——与其他变量复制一样,直接赋值就行
#include<iostream> #include<string> using namespace std; int main() { string a,b; cin >> a; b = a; cout << "a=" << a << endl; cout << "b=" << b << endl; return 0; }
结果如下
字符串拼接
将两个字符串接连在一起,可以使用直接相加的方式,或者使用append(const char*str,int n)函数
直接相加
代码示例:
#include<iostream> #include<string> using namespace std; int main() { string a,b,c; cin >> a >> b; c = a + b; cout << endl; cout << "a=" << a << endl; cout << "b=" << b << endl; cout << "c=" << c << endl; return 0; }
运行结果
append(const char*str,int n)
append是封装在string里面的函数,用来拼接两个字符串,append()函数里面的形参有两个,
1)需要拼接的常量字符串;
2)需要拼接字符串的长度;
这两个参数,可以只写const char *str, 也可以两个都写,下面是具体的代码示例:
#include<iostream> #include<string> using namespace std; int main() { string a,b; a = "hello "; cout << "拼接前:"<<endl; cout << "a=" << a << endl; a = a.append("sheep", 2 ); cout << "拼接后(将sheep的前两个字符拼接到a(hello )):" << endl; cout << "a=" << a << endl; cout << endl; b = "hello "; cout << "拼接前:" << endl; cout << "b=" << b << endl; b = b.append("sheep"); cout << "拼接后(将sheep全部拼接到b(hello )):" << endl; cout << "b=" << b << endl; return 0; }
运行结果如下:
字符串比较
字符串比较时,可以直接用==,!=,<,<=,>,>=比较大小,比较规则是ASCII码,从第一个字符逐字开始比较;
这写符号比较时:是真的返回1,否则返回0;具体示例如下:
#include<iostream> #include<string> using namespace std; int main() { string a, b,c; a = "abc"; b = "abc"; c = "acb"; cout <<"(a == b )——" <<(a == b) << endl; //对于这个来说,a,c的比较先是第一个字符的比较,相等后,比较第二个字符 ,字符b的ascII码值大于c的ascii码值 //就结束比较的符合a<=c; cout <<"(a <= c)——" << (a <= c) << endl; cout <<"(a >= c)——" <<(a >= c) << endl; return 0; }
运行结果如下
字符串长度length()/size()
获取字符串长度,通常用length()或者size(),都是获取字符串的实际长度,没有C语言里面的‘\0’
#include<iostream> #include<string> using namespace std; int main() { string a = "abcde"; cout << a << endl; cout << "a.length()——" << a.length()<<endl; cout<<"a.size()——"<< a.size() << endl; return 0; }
运行结果如下
字符串查找find(string str)
查找第一次出现的目标字符串通常运用find()函数,如果查找成功,则输出查找的第一个位置,否则返回-1;具体示例如下
#include<iostream> #include<string> using namespace std; int main() { string a = "abcdecd",b="cd"; cout <<"查找abcdecd中的cd:——"<< a.find(b) << endl; cout <<"查找abcdecd中的ec:——" << a.find("ec") << endl; return 0; }
运行结果如下
查找子串substr(int a,int b)
一般是查找当前字符串的子串,用substr(),substr()可以用两个参数,也可以用一个参数
substr(a,b)——一般是从a下标到b下标的子字符串
substr(a)——一般是从a下标到结尾的子字符串
#include<iostream> #include<string> using namespace std; int main() { string a = "abcdecd"; cout << a<<endl<<endl; cout << "a.substr(2, 5)——"<<a.substr(2, 5) << endl; cout <<"a.substr(5)——"<< a.substr(5) << endl; cout << "a.substr(0,5)——"<<a.substr(0, 5); return 0; }
字符串的大小写转换
大写转小写tolower(char a)
tolower(char a)只能对单个字符进行转换,转换完后记得强转---另外对小写字母自动跳过
#include<iostream> #include<string> using namespace std; int main() { string a = "ABCDE"; cout << a << endl; for (int i = 0; i < a.size(); i++) { cout <<(char) tolower(a[i]); } return 0; }
小写转大写toupper(char a)
toupper(char a)只能对单个字符进行转换,转换完后记得强转---另外对大写字母自动跳过
#include<iostream> #include<string> using namespace std; int main() { string a = "abcdA"; cout << a << endl; for (int i = 0; i < a.size(); i++) { cout <<(char) toupper(a[i]); } return 0; }
ASCII
大写字母比小写字母小——32
字符数字和整形数字相差——48
#include<iostream> using namespace std; int main() { cout << "A——"<<(int)'A' << endl; cout << "Z——" << (int)'Z' << endl; cout << "a——" << (int)'a' << endl; cout << "z——" << (int)'z' << endl; cout << "a-A——" << (int)'a' - 'A' << endl; cout << "0——" << (int)'0' << endl; cout << "'1'-48——"<<'1' - 48 << endl; return 0; }