C++中 string类定义、相关函数引用
在C++中,可以使用string类来处理字符串,它提供了一系列方便的字符串操作函数。下面介绍string类的定义和一些常用的成员函数。
- string类的定义 
string类是C++标准库中的一个类,它定义在头文件<string>中。可以使用以下语句来定义一个string对象:
#include <string> using namespace std; string str = "hello";
在上面的代码中,我们首先包含了<string>头文件,并使用using namespace std来使用std命名空间。然后定义了一个string对象str,并初始化为"hello"。
- 常用的成员函数 
string类提供了许多成员函数来处理字符串,下面列举一些常用的函数:
- length():返回字符串的长度。 
- size():返回字符串的长度,与length()函数功能相同。 
- empty():判断字符串是否为空。 
- clear():清空字符串中的所有字符。 
- append():在字符串的末尾添加一个字符串或字符。 
- substr():返回字符串中指定位置和长度的子串。 
- find():在字符串中查找指定的子串,返回其位置。如果没有找到,则返回string::npos。 
- replace():将字符串中指定的子串替换为另一个字符串或字符。 
- erase():删除字符串中指定位置和长度的字符。 
下面是一个使用上述成员函数的示例程序:
#include <iostream>
#include <string>
using namespace std;
int main()
{
    string str = "hello, world";
    cout << "原始字符串:" << str << endl;
    // 使用length和size函数获取字符串的长度
    cout << "字符串的长度为:" << str.length() << endl;
    cout << "字符串的长度为:" << str.size() << endl;
    // 使用empty函数判断字符串是否为空
    if (str.empty()) {
        cout << "字符串为空。" << endl;
    } else {
        cout << "字符串不为空。" << endl;
    }
    // 使用append函数在字符串的末尾添加一个字符串或字符
    str.append("!");
    cout << "添加'!'后的字符串:" << str << endl;
    // 使用substr函数获取字符串的子串
    string sub = str.substr(0, 5);
    cout << "子串为:" << sub << endl;
    // 使用find函数在字符串中查找指定的子串
    int pos = str.find("world");
    if (pos != string::npos) {
        cout << "找到了\\"world\\",位置为:" << pos << endl;
    } else {
        cout << "没有找到\\"world\\"。" << endl;
    }
    // 使用replace函数将字符串中的子串替换为另一个字符串
    str.replace(pos, 5, "C++");
    cout << "替换后的字符串:" << str << endl;
    // 使用erase函数删除字符串中的一部分字符
    str.erase(0, 6);
    cout << "删除部分字符后的字符串:" << str << endl;
    // 使用clear函数清空字符串
    str.clear();
    cout << "清空后的字符串:" << str << endl;
    return 0;
}在上面的示例程序中,我们首先定义了一个string对象str,并初始化为"hello, world"。然后使用length和size函数获取字符串的长度,并使用empty函数判断字符串是否为空。接着使用append函数在字符串的末尾添加一个字符"!",并使用substr函数获取字符串的子串。使用find函数在字符串中查找指定的子串"world",如果找到了则输出其位置。然后使用replace函数将字符串中的子串"world"替换为"C++",使用erase函数删除字符串中的前6个字符,最后使用clear函数清空字符串。运行程序后,输出结果如下:
原始字符串:hello, world 字符串的长度为:12 字符串的长度为:12 字符串不为空。 添加'!'后的字符串:hello, world! 子串为:hello 找到了"world",位置为:7 替换后的字符串:hello, C++! 删除部分字符后的字符串:C++! 清空后的字符串:
可以看到,程序使用了string类的许多成员函数,对字符串进行了各种操作。
除了上述例程中使用的成员函数外,string类还有许多其他有用的成员函数,下面列举一些常用的:
- at:获取指定位置的字符。 
string str = "hello"; char c = str.at(0); //获取第一个字符'h'
- front和back:获取字符串的第一个字符和最后一个字符。 
string str = "hello"; char first = str.front(); //获取第一个字符'h' char last = str.back(); //获取最后一个字符'o'
- compare:比较两个字符串的大小。 
string str1 = "hello"; string str2 = "world"; int result = str1.compare(str2); //返回负数,表示str1小于str2
- c_str:将字符串转换为C风格字符串。 
string str = "hello"; const char* cstr = str.c_str(); //将str转换为C风格字符串
- getline:从输入流中读取一行字符串。 
string line; getline(cin, line); //从标准输入读取一行字符串
- stoi、stol、stof、stod:将字符串转换为数值类型。 
string str = "123"; int num = stoi(str); //将str转换为整型数值
to_string:将数值类型转换为字符串
int num = 123; string str = to_string(num); //将num转换为字符串
这些成员函数覆盖了字符串的常见操作,开发者可以根据需要选择使用。同时,string类还支持重载运算符,可以使用加号进行字符串的拼接操作,如:
string str1 = "hello"; string str2 = "world"; string str3 = str1 + ", " + str2; //拼接两个字符串
除了string类本身提供的成员函数和运算符,C++标准库还提供了一些与string相关的算法,可以对字符串进行各种操作。下面列举一些常用的算法:
- find、rfind、find_first_of、find_last_of:在字符串中查找指定字符或子串的位置。 
string str = "hello, world"; int pos = find(str.begin(), str.end(), ',') - str.begin(); //查找','的位置
- copy:将字符串中的字符复制到指定位置。 
string str = "hello"; char buf[10]; copy(str.begin(), str.end(), buf); //将str中的字符复制到buf中
- transform:将字符串中的字符进行变换。 
string str = "hello"; transform(str.begin(), str.end(), str.begin(), ::toupper); //将str中的字符全部转换为大写
- reverse:将字符串反转。 
string str = "hello"; reverse(str.begin(), str.end()); //将str反转
- sort:将字符串中的字符进行排序。 
string str = "hello"; sort(str.begin(), str.end()); //将str中的字符进行排序
这些算法可以通过包含头文件<algorithm>来使用。它们通常与迭代器结合使用,可以对字符串中的字符进行各种操作,方便高效。

- 上一篇:C++中字符数组的综合应用
- 下一篇:C++string类的综合应用
