目录
(一)C++ 字符串的简介
在C++ 中,字符串类型实际上是通过字符串类 string
类 来操作的。这种类方式的操作使得字符串的处理更加方便。要使用C++ 中的 string
类 需要添加string
头文件 #include <string>
(二)C++ 字符串的使用
(1)赋值
C++ 中有多种对字符串赋值的方式
- 示例代码:
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char const *argv[])
{
string str_1 = "张三";
string str_2("李四");
string str_3(str_1);
string str_4(str_1 + str_2);
string str_5(3 , 'a');
cout << "str_1 = " << str_1 << endl;
cout << "str_2 = " << str_2 << endl;
cout << "str_3 = " << str_3 << endl;
cout << "str_4 = " << str_4 << endl;
cout << "str_5 = " << str_5 << endl;
return 0;
}
/*
输出结果:
str_1 = 张三
str_2 = 李四
str_3 = 张三
str_4 = 张三李四
str_5 = aaa
*/
可以说是格式各样,千奇百怪;想怎么玩就怎么玩,当然还有更多方式,等待我们去尝试。
(2)字符串的拼接
字符串的拼接有两种方式
1. + 运算符
- 示例代码:
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char const *argv[])
{
string str_1("Hello");
string str_2(" C++");
cout << str_1 + str_2 << endl;
}
/*
输出结果:
Hello C+
*/
2. append() 函数
- 示例代码:
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char const *argv[])
{
string str("Hello");
str.append(" C++");
cout << str << endl;
}
/*
输出结果:
Hello C++
*/
由此可见 C++ 对字符串的拼接操作比 C语言 方便了不是一点两点 好用爱用
(3)查找与替换
string
类提供了 find()
和 replace()
函数 分别用于查找和替换字符串
- 示例代码:
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main(int argc, char const *argv[])
{
string str("张三和李四是好朋友");
// 字符串的查找
int pos = str.find("张三"); // 找到返回起始位置
cout << "张三在 " << pos << "~" << strlen("张三")-1 << " 位置" << endl;
// 字符串的替换
// 第一个参数是起始位置 第二个参数是替换几个字符 第三个参数是要替换的字符串
str.replace(0 , strlen("王五") , "王五");
cout << "str = " << str << endl;
}
/*
输出结果:
张三在 0~5 位置
str = 王五和李四是好朋友
*/
(4)字符串的比较
C++ 中可以直接使用关系运算符 (==
、!=
、<
、>
)来比较字符串的大小 按 ASCII
码 值大小进行比较
- 示例代码
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char const *argv[])
{
string str_1("aBc");
string str_2("abc");
if (str_1 == str_2)
{
cout << "str_1 == str_2" << endl;
}
else if (str_1 > str_2)
{
cout << "str_1 > str_2" << endl;
}
else if (str_1 < str_2)
{
cout << "str_1 < str_2" << endl;
}
}
/*
输出结果:
str_1 < str_2
*/
(5)字符串的存取
可以使用下标操作符 []
或 at()
方法来访问和修改字符串中的字符
- 示例代码:
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char const *argv[])
{
string str("Hello C++");
// 字符串的存取
char ch_1 = str.at(0);// 越界会报错
cout << "c = " << ch_1 << endl;
char ch_2 = str[0]; // 越界不会报错
cout << "c = " << ch_2 << endl;
}
使用下标操作符 []
时 若访问越界不会报错 但使用at()
时 访问越界会报错。
(6)字符串插入
使用 insert()
函数可在指定位置是插入指定字符串
- 示例代码:
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char const *argv[])
{
string str("Hello");
// 字符串的插入
// 第一个参数 要插入的起始位置 第二个参数 要插入的字符串
str.insert(5 , " C++");
cout << "str = " << str << endl;
}
/*
输出结果:
str = Hello C++
*/
(7)字符串的删除
使用 erase()
函数可以删除字符串中的部分内容
- 示例代码:
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char const *argv[])
{
string str("Hello C++");
// 第一个参数 要删除的起始位置 第二个参数 要删除字符串的长度
str.erase(5 , strlen(" C++"));
cout << "str = " << str << endl;
}
/*
输出结果:
str = Hello
*/
(8)字符串清空
使用 clear()
函数可以清空字符串的内容
- 示例代码:
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char const *argv[])
{
string str("Hello C++");
str.clear();
cout << "str = " << str << endl;
}
/*
输出结果:
str =
*/
(9)风格转换
1. C++ 风格字符串转换为 C 风格字符串
使用 c_str()
函数可以将 C++ 字符串转换为 C 风格字符串
- 示例代码
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char const *argv[])
{
string str("Hello C++");
const char * str_c = str.c_str();
cout << "str_c = " << str_c << endl;
}
/*
输出结果:
str_c = Hello C++
*/
2. C 风格字符串转换为 C++ 风格字符串
直接将 C 风格字符串赋值给 C++ 的 string
类即可,C++ 会自动转换
- 示例代码:
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char const *argv[])
{
const char * str_c = "Hello C++";
string str = str_c;
cout << "str = " << str <<endl;
}
/*
输出结果:
str = Hello C++
*/
注意 定义 C 风格字符串时 要加 const
喔