📚 前言
字符串是在编程中广泛使用的数据类型,用于表示一系列字符。在C++中,我们可以使用C风格字符串和string
类来处理字符串操作。本篇学习笔记将详细介绍字符串的相关知识。
📖 1 C风格字符串
✨ C风格字符串初始化
C风格字符串是以空字符('\0'
)结尾的字符数组。可以通过以下方式进行初始化:
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str1[] = "Hello"; // 字符串字面值初始化
char str2[6] = "World"; // 指定数组大小
char str3[] = {'H', 'e', 'l', 'l', 'o', '\0'}; // 逐个字符初始化
cout << "str1: " << str1 << endl; // 输出字符串
cout << "str2: " << str2 << endl;
cout << "str3: " << str3 << endl;
return 0;
}
在上述示例中,我们使用不同的方式对C风格字符串进行初始化,并输出字符串的内容。
运行结果:
✨ C风格字符串常见操作
C风格字符串提供了一系列的函数来进行字符串操作,包括计算长度、拷贝、连接等。
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str1[] = "Hello";
char str2[20];
// 字符串长度
int length = strlen(str1);
cout << "Length of str1: " << length << endl;
// 字符串拷贝
strcpy(str2, str1);
cout << "str2: " << str2 << endl;
// 字符串连接
strcat(str2, " World");
cout << "str2: " << str2 << endl;
// 字符串比较
int result = strcmp(str1, str2);
if (result == 0) {
cout << "str1 and str2 are equal" << endl;
} else if (result < 0) {
cout << "str1 is less than str2" << endl;
} else {
cout << "str1 is greater than str2" << endl;
}
return 0;
}
在上述示例中,我们使用了strlen
函数计算字符串的长度,使用strcpy
函数进行字符串拷贝,使用strcat
函数进行字符串连接,并使用strcmp
函数比较两个字符串的大小关系。
运行结果:
📖 string
类
C++标准库提供了
string
类,是对C风格字符串的封装,提供了更加方便和安全的字符串操作。
✨ string
类初始化
可以使用以下方式进行
string
类的初始化:
#include <iostream>
#include <string>
using namespace std;
int main() {
string str1 = "Hello"; // 字符串字面值初始化
string str2("World"); // 直接初始化
string str3(5, 'A'); // 重复字符初始化
cout << "str1: " << str1 << endl;
cout << "str2: " << str2 << endl;
cout << "str3: " << str3 << endl;
return 0;
}
在上述示例中,我们使用不同的方式对
string
类进行初始化,并输出字符串的内容。
运行结果:
✨ string
类常见操作
string
类提供了丰富的成员函数来进行字符串操作,包括长度计算、拷贝、连接、子串提取等。
#include <iostream>
#include <string>
using namespace std;
int main() {
string str1 = "Hello";
string str2 = "World";
// 字符串长度
int length = str1.length();
cout << "Length of str1: " << length << endl;
// 字符串拷贝
string str3 = str1;
cout << "str3: " << str3 << endl;
// 字符串连接
string str4 = str1 + " " + str2;
cout << "str4: " << str4 << endl;
// 子串提取
string sub = str4.substr(6, 5);
cout << "Substring: " << sub << endl;
// 查找子串
size_t pos = str4.find("World");
if (pos != string::npos) {
cout << "Substring found at position " << pos << endl;
} else {
cout << "Substring not found" << endl;
}
return 0;
}
在上述示例中,我们使用了
length
函数计算字符串长度,使用赋值运算符进行字符串拷贝,使用加号进行字符串连接,使用substr
函数提取子串,使用find
函数查找子串。
运行结果:
📖 3 字符串类型转换
字符串类型转换在实际开发中非常常见,包括将
char
类型转换为string
类型,将string
类型转换为char
类型,以及字符串和数字之间的转换。
✨char
→ string
可以使用
string
类的构造函数将char
类型转换为string
类型:
#include <iostream>
#include <string>
using namespace std;
int main() {
char ch = 'A';
string str = string(1, ch); // 将字符转换为字符串
cout << "str: " << str << endl;
return 0;
}
在上述示例中,我们将一个字符
'A'
转换为字符串类型,并输出结果。
✨ string
→ char
可以使用
c_str
函数将string
类型转换为char
类型:
#include <iostream>
#include <string>
using namespace std;
int main() {
string str = "Hello";
const char* ch = str.c_str(); // 将字符串转换为字符数组
cout << "ch: " << ch << endl;
return 0;
}
在上述示例中,我们将一个字符串
"Hello"
转换为char
类型,并输出结果。
✨ string
→ num(C++11)
在C++11标准中,可以使用
stoi
、stof
、stod
等函数将字符串转换为对应的数字类型:
#include <iostream>
#include <string>
using namespace std;
int main() {
string str = "123";
int num = stoi(str); // 字符串转换为整数
float fnum = stof(str); // 字符串转换为浮点数
double dnum = stod(str); // 字符串转换为双精度浮点数
cout << "num: " << num << endl;
cout << "fnum: " << fnum << endl;
cout << "dnum: " << dnum << endl;
return 0;
}
<在上述示例中,我们将字符串"123"
转换为整数、浮点数和双精度浮点数,并输出结果。
✨ num → string
可以使用
to_string
函数将数字类型转换为字符串类型:
#include <iostream>
#include <string>
using namespace std;
int main() {
int num = 123;
string str = to_string(num); // 数字转换为字符串
cout << "str: " << str << endl;
return 0;
}
在上述示例中,我们将整数123
转换为字符串类型,并输出结果。
📖 总结
本篇学习笔记详细介绍了C风格字符串和string
类的使用方法,包括字符串的初始化、常见操作以及字符串类型转换。通过学习和掌握这些知识,你可以更加灵活地处理字符串,并在实际编程中运用到字符串操作中。
通过对字符串的学习,我们可以更好地理解和应用字符串相关的函数和类,提高程序的灵活性和可读性。掌握好字符串的处理方法,对于开发高效、稳定的程序非常重要。希望本篇学习笔记对你的学习有所帮助!
🚀 祝你在C++学习的道路上取得更大的进步!
⭐️希望本篇文章对你有所帮助。
⭐️如果你有任何问题或疑惑,请随时向提问。
⭐️感谢阅读!