什么是string容器?
在 C++ 中,std::string
是一个非常强大的容器,用于存储和管理字符串数据。它提供了一系列的成员函数和操作符,使得字符串的创建、操作和处理变得非常方便和高效。
string本质上是一个类!
string 与char*的区别
string是一个类,内部封装了char*,管理这个字符串,是char*型容器
char*是一个指针
string构造函数
void test()
{
//默认构造 string();创建一个空字符串
string str;
//使用字符串 s 进行初始化 :string(const char *)
const char* str1 = "hhhhhhhhhhh";
string s1(str1);
cout << s1 << endl;
//使用一个string对象初始化另外一个string对象
//string(const string&str);
string s2(s1);
//使用n个字符串a初始化
string s3(10,'a');
}
string赋值操作
等号赋值 以及内部成员函数assign()赋值
void test()
{
//默认构造 string();创建一个空字符串
string str1;
str1 = "hello!";
//类似拷贝构造
string str2 = str1;
//利用内部成员函数assign函数
string str3;
str3.assign("hello c++");
//把字符串s前n个字符赋值给当前
//相当与把前五个字符也就是 hello放入容器
string str4;
str4.assign("hello c++", 5);
//类似拷贝
string str5;
str5.assign(str4);
//n个字符a放进去
string str6;
str6.assign(10, 'a');
}
string字符串拼接
void test()
{
//末尾追究字符串
string str1 = "I";
str1 += " love U";
cout << str1 << endl;
//末尾添加字符
str1 += 'a';
//利用内部成员函数 append
string str2;
str2.append("iiiiii");
//把字符串的前n个拼接到末尾 string& append(const char*s,int n)
//将game拼接到后面
str2.append("game over", 4);
//直接把别的字符串追加到末尾
string str3;
str3.append(str2);
//string& append(const char*s,pos,int n) 从pos位置处截取n个!
string str4;
//从str2中,iiiiii,从第0个位置截取3个,也就是截取iii
str4.append(str2, 0, 3);
}
string查找和替换
查找:查找指定的字符串是否存在 find 从左往右 rfind 从右往左
替换:在指定的位置替换字符串 replace
void test01()
{
//find 函数从左往右查找 rfind函数 从右往左查
//查到了返回 出现的位置
//没查找返回 -1
string str1 = "abcdef";
int pos = str1.find("de");
if (pos == -1)
{
cout << "未找到!" << endl;
}
else {
cout << "找到字符串,pos =" << pos << endl;
}
//替换操作 replace ()
//从1号位置起 连这3个字符,替换为1111
//abcdef--------->a1111ef
str1.replace(1, 3,"1111");
}
string字符串比较
比较的方式:按照字符串的ASCII码进行对比
利用compare函数,一般用于判断数据是否相同,判断谁大谁小意义不大
= 返回0
> 返回1
< 返回-1
void test02()
{
string str1 = "hello";
string str2 = "hello";
if (str1.compare(str2) == 0)
{
cout << "str1=str2" << endl;
}else if(str1.compare(str2) == 1)
{
cout << "str1>str2" << endl;
}else if(str1.compare(str2) == -1)
{
cout << "str1<str2" << endl;
}
}
string字符提取
void test03()
{
string st1 = "hello";
//通过【】访问单个字符
for (int i = 0; i < st1.size(); i++)
{
cout << st1[i] << endl;
}
//通过at方式访问单个字符
for (int i = 0; i < st1.size(); i++)
{
cout << st1.at(i)<< endl;
}
//修改单个字符 将字符第一改成x
st1.at(1) = 'x';
st1[1] = 'x';
}
string插入删除操作
插入:insert()
删除:erase()
void test03()
{
string st1 = "hello";
//插入: 从第一个位置,插入“111”
//hello--------->h111ello
st1.insert(1, "111");
//删除 从第1个位置起,删除3个字符
//h111ello--------->hello
st1.erase(1, 3);
}
string字串
从字符串中获取想要的子串
string substr(int pos=0,int n= npos)const; 返回由pos开始的n个字符组成的字符串
void test03()
{
string st1 = "hello";
//求子串
string subStr = st1.substr(1, 3);
cout << subStr << endl;
}
void test04()
{
string email = "84651654895146@137.com";
//从邮箱中获取用户信息
//找到@的位置
int pos=email.find("@");
cout << pos << endl;
//截取用户名
string Username = email.substr(0, pos);
cout << Username << endl;
}