字符串入门
一、知识引入
对于一个或多个字符构成的序列,除了用字符数组存储以外,还可以用C++ string类来进行字符串的处理。
要使用string 类,必须在程序中包含头文件cstring。string类的定义隐藏了字符串的数组性质,让我们能够像处理普通变量那样处理字符串。
使用string类型串具有一些独特的优势。 首先, 它在内存使用上是自动的, 需要多少, 开辟多少, 并且能够根据字符串大小的变化自动调整所开辟的内存,无需考虑越界的情况; 此外, string类附带了功能丰富的函数,方便进行一系列的复杂操作。
下面我们还是先从声明、赋值以及取值三方面来简单了解string 类的使用。
二、字符串的基本操作
1、声明:
string 字符串名; 例如:string a; / string a,b; 字符串初始状态为空串。
Copy
2、赋值:
方式 | 含义 |
---|---|
cin >> a; | 用cin读取一段字符串,并将它赋值给a。缺点:无法识别空格和换行符。 |
getline ( cin,a); | 可识别空格的赋值方式。 |
getline(cin,a,'分隔符'); | 这里的分割符就相当于是“结束符”,我们是在输入的字符串结尾额外再加一个符号,构成a的全部内容。 |
string a1(a); | 定义了一个字符串a1,并将它初始化为和字符串a一样的内容(保证在此之前a已经定义并初始化过了)。 |
string a2=a+a1; | 定义了一个字符串a2,并将它的内容初始化为a和a1拼接在一起的结果。 |
PS: string类变量在存储字符时,方式时和字符数组一样的,依然是把每个字符拆分开来单独放置在对应的“小房子”中。
3、取值:
字符串的取值很简单,一个cout指令直接搞定。下面举一个简单的完整程序,帮助大家了解一下字符串的一般操作。
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a;
cin>>a;
string a1(a);
string a2=a;
string a3(5,'0');
string a4=a2+a3;
cout<<a<<endl<<a1<<endl<<a2<<endl<<a3<<endl<<a4;
}
Copy
正在上传…重新上传取消
4、关于下标:
对于一个string 类变量a,当你采用cin方式赋值时,“一千个人眼里有一千个哈姆雷特”,一个人赋值的结果也有成百上千种可能---每个人塞到a里面的字符串内容是不同的,字符串的长度也是不同的。所以呢,想要获取实际字符串长度,需要借助其他函数:
(1) a.size() (2)a.length()
Copy
上述两个函数的功能都是返回a中字符的实际个数。知道了个数,具体每一个元素的下标也就一清二楚了。这里同样举一个具体的程序:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a;
cin