头文件:
string.h
属性:
String 属于引用数据类型;
用法:
1:初始化:
第一种方式::变量名(“字符串”)
第二种方式::变量名=“字符串”
举例:
std::
string name2 =
"balabal";
或string s2(
"balabala")
定义一个新变量S2,内容完全等于balabala;
2:追加字符串
第一种方式::变量名+=“字符串”
第二种方式::变量名=std::string(“字符串”)+“字符串”
std::
string nameToAdd =
"my";
nameToAdd
+=
"cat";
my追加cat
和std::
string nameToAdd2 = std::
string(
"my")
+
"Hello!";
注意不能用:std::string nameToAdd = "my" + "cat"
这样实际上是将两个const char的数组相加,"字符串"其实是一个const char数组,是一个指针,它不是真正的字符串,不能将这两个指针相加;这里
是创建一个string对象并赋值给另一个string对象
3:选择添加:
第一种方式::变量名(“字符串”)
第二种方式::变量名=“字符串”
std::
string name(
"balabala",3,3);
定义name为balabala中从第三个字符开始往后的三个字符aba;
和
string name(
"balabala",4);
定义一个新变量,内容等于balabala前4个字符;
4:重复
方式:变量名(重复次数,'单个字符')
std::
string name(8,
'b');
新定义一个新变量,内容为8个b;
5:查找字符串中的文本
方式:变量名.find("字符串“)
std::
string nameToAdd =
"mycat";
nameToAdd.find(
"cat");
查找字符串nameToAdd里面的字符串"cat",查找成功返回的是cat所在的首地址,查找失败返回std::
string::npos
(
std::string::npos的值等于size_type类型可以表示的最大值,通常是一个非常大的数)
6:数组操作
方式:变量名[ ]
因为string数据类型可以使用[ ],所以可以像操作数组一样访问字符串
7:插入操作
方式: 字符串变量名.insert(位置,内容(或者定义好的字符串变量地址(名字))
name8.insert(0,
"whh");在第0个位置插入whh
和name8.insert(0,
"balabala", 3, 3);在第0个位置(下标)插入字符串
balabala
中从第三个字符开始往后的三个字符aba;
8:删除操作
第一种方式::从某个下标开始及其后面全部丢弃。
std::
string namestr(
"shibusayirenqianlibuliuxing");
namestr.erase(3);
得到shi
第二种方式::从某个下标开始的n个字符删掉。
std::
string namestr(
"shibusayirenqianlibuliuxing");
namestr.erase(3,20);
得到shixing
9:清除操作
方式:变量名.clear()
std::
string namestr(
"shibusayirenqianlibuliuxing");
namestr.clear();
10:返回字符串长度
方式:变量名.size()返回字符串长度(.size())
追加:
1.运算结果仍然是String 类型;
2:String s=""; //长度无限制;
3: char c=’’; //编译不通过(char类型单引号内必须有一个字符);
4:可以用cin,cout来输入,显示str对象,不能用printf直接输出
5:可以用数组访问的方法来访问string类型数据,如 s[2];
6: 不能将一个数组赋值给另外一个数组,但是可以将一个string对象赋值给另一个string对象;