1. string 基本概念
string 是C++风格的字符串 本质上是一个类
string 和 char * 的区别:
char * 是一个指针
string 是一个类 类内部封装了 char * 管理这个字符串 是一个 char * 型的容器
特点:
string 类内封装了很多成员方法
例如:查找 find 拷贝 copy 删除 delete 替换 replace 插入 insert
string 管理 char * 所分配的内存 不用担心赋值越界和取值越界等问题 由类内部进行负责
2. string 构造函数
构造函数原型:
string(); //创建一个空的字符串
string(const char* s); //使用字符串s初始化
string(const string& str); //使用一个string对象初始化另一个string对象
string(int n, int c); //使用n个字符c初始化
代码示例:
#include <iostream>
using namespace std;
#include <string>
#include <algorithm> //标准算法头文件
//string的构造函数
//测试函数
void test01()
{
string s1; //默认构造
const char* str = "Hello World!";
string s2(str); //使用字符初始化
cout << "s2 = " << s2 << endl;
string s3(s2); //使用一个string对象初始化另一个string对象
cout << "s3 = " << s3 << endl;
string s4(10, 'a'); //使用n个字符c初始化
cout << "s4 = " << s4 << endl;
}
int main()
{
test01();
system("pause");
return 0;
}
3. string 赋值操作
代码示例
#include <iostream>
using namespace std;
#include <string>
#include <algorithm> //标准算法头文件
//string的赋值操作
//测试函数
void test01()
{
//通过 = 进行赋值
string str1;
str1 = "Hello World!";
cout << "str1 = " << str1 << endl;
string str2;
str2 = str1;
cout << "str2 = " << str2 << endl;
string str3;;
str3 = 'a';
cout << "str3 = " << str3 << endl;
//通过 assign 函数进行赋值
string str4;
str4.assign("Hello C++!");
cout << "str4 = " << str4 << endl;
string str5;
str5.assign("Hello C++!", 5);
cout << "str5 = " << str5 << endl;
string str6;
str6.assign(str4);;
cout << "str6 = " << str6 << endl;
string str7;
str7.assign(7, 'w');
cout << "str7 = " << str7 << endl;
}
int main()
{
test01();
system("pause");
return 0;
}
4. string 字符串拼接
代码示例
#include <iostream>
using namespace std;
#include <string>
#include <algorithm> //标准算法头文件
//string字符串拼接
//测试函数
void test01()
{
// += 方式
string str1 = "我";
str1 += "爱玩游戏";
cout << "str1 = " << str1 << endl;
str1 += ': ';
cout << "str1 = " << str1 << endl;
string str2 = "LOL DNF";
str1 += str2;
cout << "str1 = " << str1 << endl;
// append 方式
string str3 = "I";
str3.append(" love ");
cout << "str3 = " << str3 << endl;
str3.append("game abcde", 4);
cout << "str3 = " << str3 << endl;
//str3.append(str2, 1, 3); //I love game LOL
str3.append(str2, 4, 3); //I love game DNF
cout << "str3 = " << str3 << endl;
}
int main()
{
test01();
system("pause");
return 0;
}
5. string 查找和替换
功能描述:
查找:查找指定字符串是否存在
替换:在指定的位置替换字符串
代码示例
#include <iostream>
using namespace std;
#include <string>
#include <algorithm> //标准算法头文件
//string字符串查找和替换
//1、查找
//测试函数
void test01()
{
string str1 = "abcdefgde";
//find 从左往右
int pos = str1.find("de");
if (pos == -1)
{
cout << "未找到字符串" << endl;
}
else
{
cout << "找到字符串 pos = " << pos << endl; //3
}
//rfind 从右往左
pos = str1.rfind("de");
if (pos == -1)
{
cout << "未找到字符串" << endl;
}
else
{
cout << "找到字符串 pos = " << pos << endl; //7
}
}
//2、替换
void test02()
{
string str1 = "abcdefg";
//replace
str1.replace(1, 3, "1111");
cout << "str1 = " << str1 << endl; //a1111efg
}
int main()
{
//test01();
test02();
system("pause");
return 0;
}
6. string 字符串比较
功能描述:
字符串之间的比较
比较方式:
按照字符的Ascll码值比较
= 返回 0
> 返回1
< 返回-1
代码示例
#include <iostream>
using namespace std;
#include <string>
#include <algorithm> //标准算法头文件
//string字符串比较
//测试函数
void test01()
{
string str1 = "hello";
string str2 = "xello";
if (str1.compare(str2) == 0)
{
cout << "str1 = str2" << endl;
}
else if (str1.compare(str2) > 0)
{
cout << "str1 > str2" << endl;
}
else if (str1.compare(str2) < 0)
{
cout << "str1 < str2" << endl;
}
}
int main()
{
test01();
system("pause");
return 0;
}
7. string 字符存取
string 中单个字符的存取方式有两种
char& operator[](int n); //通过[]方式取字符
char& at(int n); //通过at方式取字符
代码示例
#include <iostream>
using namespace std;
#include <string>
#include <algorithm> //标准算法头文件
//string字符存取操作
//测试函数
void test01()
{
string str1 = "hello";
cout << "str1 = " << str1 << endl;
//1、通过[]访问单个字符
for (int i = 0;i < str1.size();i++)
{
cout << str1[i]<<" ";
}
cout << endl;
//2、通过at访问单个字符
for (int i = 0;i < str1.size();i++)
{
cout << str1.at(i) << " ";
}
cout << endl;
str1[0] = 'x';
cout << "str1 = " << str1 << endl;
str1.at(1) = 'x';
cout << "str1 = " << str1 << endl;
}
int main()
{
test01();
system("pause");
return 0;
}
8. string 中的插入和删除
功能描述:
对 string 字符串进行插入和删除字符操作
代码示例
#include <iostream>
using namespace std;
#include <string>
#include <algorithm> //标准算法头文件
//string 字符串插入和删除
//测试函数
void test01()
{
string str1 = "hello";
//插入
str1.insert(1, "111"); //h111ello
cout << "str1 = " << str1 << endl;
//删除
str1.erase(1,3); //hello
cout << "str1 = " << str1 << endl;
}
int main()
{
test01();
system("pause");
return 0;
}
9. string 子串
功能描述:
从字符串中获取想要的子串
代码示例
#include <iostream>
using namespace std;
#include <string>
#include <algorithm> //标准算法头文件
//string 子串
//测试函数
void test01()
{
string str1 = "abcdef";
string subStr = str1.substr(1, 3);
cout << "subStr = " << subStr << endl; //bcd
}
//实用操作
void test02()
{
string email = "zhangsan@163.com";
//从邮箱地址中找到用户信息
int pos = email.find('@');
string userName = email.substr(0, pos);
cout << "userName = " << userName << endl; //zhangsan
}
int main()
{
test01();
test02();
system("pause");
return 0;
}