以下是 C++ 中 string 类常用的函数:
一、构造函数和析构函数:
string():默认构造函数,创建一个空的字符串。string(const char* s):使用 C 风格的字符串s初始化string对象。string(size_t n, char c):创建一个由n个字符c组成的字符串。~string():析构函数,释放string对象占用的资源。
二、基本操作函数:
size_t length() const或size_t size() const:返回字符串的长度(字符数量,不包括'\0')。bool empty() const:判断字符串是否为空,若为空返回true,否则返回false。void clear():清空字符串,使其长度为 0。
三、元素访问函数:
char& operator[](size_t pos):通过下标访问字符串中的字符,可修改字符。const char& operator[](size_t pos) const:通过下标访问字符串中的字符,不可修改字符。char& at(size_t pos):通过下标访问字符串中的字符,可修改字符,若越界会抛出out_of_range异常。const char& at(size_t pos) const:通过下标访问字符串中的字符,不可修改字符,若越界会抛出out_of_range异常。
四、修改字符串的函数:
string& operator+=(const string& str):将str追加到当前字符串末尾。string& operator+=(const char* s):将 C 风格字符串s追加到当前字符串末尾。string& operator+=(char c):将字符c追加到当前字符串末尾。string& append(const string& str):将str追加到当前字符串末尾,等同于+=。string& append(const char* s):将 C 风格字符串s追加到当前字符串末尾。string& append(size_t n, char c):将n个字符c追加到当前字符串末尾。string& insert(size_t pos, const string& str):在pos位置插入str。string& insert(size_t pos, const char* s):在pos位置插入 C 风格字符串s。string& erase(size_t pos = 0, size_t len = npos):从pos位置开始删除len个字符,npos表示删除到末尾。
五、比较函数:
int compare(const string& str) const:比较当前字符串和str的大小,返回值为负数、零或正数,分别表示小于、等于或大于。int compare(const char* s) const:比较当前字符串和 C 风格字符串s的大小。
六、搜索和查找函数:
size_t find(const string& str, size_t pos = 0) const:从pos位置开始查找str的首次出现位置,未找到返回npos。size_t find(const char* s, size_t pos = 0) const:从pos位置开始查找 C 风格字符串s的首次出现位置,未找到返回npos。size_t find(char c, size_t pos = 0) const:从pos位置开始查找字符c的首次出现位置,未找到返回npos。size_t rfind(const string& str, size_t pos = npos) const:从pos位置开始逆向查找str的首次出现位置,未找到返回npos。size_t rfind(const char* s, size_t pos = npos) const:从pos位置开始逆向查找 C 风格字符串s的首次出现位置,未找到返回npos。size_t rfind(char c, size_t pos = npos) const:从pos位置开始逆向查找字符c的首次出现位置,未找到返回npos。
七、子串函数:
string substr(size_t pos = 0, size_t len = npos) const:从pos位置开始提取长度为len的子串,若len为npos或超出范围,则提取到末尾。
八、转换函数:
const char* c_str() const:将string对象转换为 C 风格的字符串。
示例代码:
#include <iostream>
#include <string>
int main() {
std::string str1 = "Hello";
std::string str2("World");
std::string str3 = str1 + str2; // 使用 operator+ 连接字符串
std::cout << "str3: " << str3 << std::endl;
str1.append(", C++"); // 使用 append 追加字符串
std::cout << "str1: " << str1 << std::endl;
size_t len = str1.length(); // 获取字符串长度
std::cout << "Length of str1: " << len << std::endl;
if (str1.find("C++")!= std::string::npos) { // 查找子串
std::cout << "Found 'C++' in str1" << std::endl;
}
std::string sub = str1.substr(7, 3); // 提取子串
std::cout << "Substring: " << sub << std::endl;
char cstr[100];
strncpy(cstr, str1.c_str(), 100); // 使用 c_str 转换为 C 风格字符串
std::cout << "C-style string: " << cstr << std::endl;
return 0;
}
代码解释:
- 首先,使用不同的构造函数创建了
str1和str2两个string对象。 - 通过
operator+将str1和str2连接得到str3并输出。 - 使用
append函数在str1后面追加", C++"并输出。 - 使用
length函数获取str1的长度。 - 使用
find函数查找"C++"是否在str1中,如果找到输出相应信息。 - 使用
substr函数从str1中提取子串。 - 使用
c_str函数将str1转换为 C 风格字符串,并复制到cstr中进行输出。
这些函数构成了 string 类的核心功能,使 C++ 中的字符串处理变得非常方便和灵活,避免了 C 风格字符串处理中容易出现的缓冲区溢出等问题。同时,string 类还提供了许多其他的实用函数,例如 replace 等,可以根据具体需求进行使用。
2762

被折叠的 条评论
为什么被折叠?



