初入紫书门(c++简单STL的应用之string)
前言
不得不说,我就是一个普通人,唉😔。我在刚开始学习紫书的过程中,我遇见了许多困难,同时,也学到了许多知识,有许多收获。现在,我就想把我这几天的学习经历记录下来
一、C++中的string类型。
以前⽤char[]的⽅式处理字符串很繁琐,现在有了string类,定义、拼接、输出、处理都更加简单啦~
不过string只能⽤cin和cout处理,⽆法⽤scanf和printf处理:
对:cin>>s
从标准输入读取string,并将读入的串存储在s中。
a.读取并忽略开头所有的空白字符(如空格,换行符,制表符,进纸符)
b.读取字符直至再次遇到空白符,读取终止
但是注意了,用cin读入string类型的数据时,键盘输入的过程中遇见空格自动终止读入,要想读入带有空格的字符串,就要用
getline(cin, s)的方式
1.string类型的初始化
四种初始化的方式 :
string s1; ——> s1为空串
string s2(“ABC”); ——> 用字符串字面值初始化s2
string s3(s2); ——>将s3初始化为s2的一个副本
string s4(n,‘c’); ——>将s4初始化为字符’c’的n个副本
2.string类型的常用操作(不断补充)
s.empty();——>若s为空串,则返回true,否则返回false
s.size();——>返回s中字符的个数
s[n]——>返回s中位置为n的字符,位置从0开始
s1+s2——>将两个串连接成新串,返回新生成的串
s1=s2——>把s1得内容替换为s2的副本
v1 == v2——>判定相等,相等返回true,否则返回false
v1 != v2——>判定不等,不等返回true,否则返回
注意:在头文件cctype中,有大量用于判断string数据类型的函数,常以is开头或to开头
注意:
除了一些特殊操作,string类型提供与vector容器相同的操作。string类型和vector容器不同的是,它不支持以栈方式操纵容器:在string类型中不能使用front,back,pop_back操作
string 是支持push_back()的,因为string也是顺序容器
3.string类型的两种常用的遍历方法
#include<iostream>
#include<string>
#include<cstdio>
using namespace std;
int main()
{
string s("Hiya");
string::iterator it; //用迭代器进行遍历
for(it=s.begin();it!=s.end();++it)
cout<<*it<<endl;
for(int i=0;s[i];i++) //用类似字符串的方式进行遍历
cout<<s[i]<<endl;
cout<<s<<endl;
return 0;
}
4.string中的拼接
string s1="hello"✔
string s2=(“world”);✔
string s3=s1+s2;✔
string s4=“hello”+s2;✔
string s5=“hello”+“world”;✘
string s6=“hello”+s2+“china”;✔
注意:两个字符串的字面值的直接相加,是非法的