STL:string的常见用法

目录

赋值和连接:

operator=: 赋值操作符:

assign(str): 将字符串赋值为另一个字符串:

+=: 字符串连接操作符:

访问和检查:

at(pos): 返回指定位置的字符,提供边界检查。

operator[]: 返回指定位置的字符,不进行边界检查。

front(): 返回字符串的第一个字符。

back(): 返回字符串的最后一个字符。

c_str(): 返回指向以 null 结尾的字符数组的指针。

data(): 返回指向字符串缓冲区的非 null 结尾字符数组的指针。

字符串信息:

length(), size(): 返回字符串的长度。

empty(): 检查字符串是否为空。

修改字符串:

insert(pos, str): 在指定位置插入字符串。

erase(pos, len): 删除从指定位置开始的指定长度的字符。

replace(pos, len, str): 用字符串替换从指定位置开始的指定长度的字符:

push_back(c): 在字符串末尾添加字符。

pop_back(): 删除字符串末尾的字符。

查找和比较:

find(str, pos): 在字符串中查找子串,从指定位置开始:

rfind(str, pos): 从字符串末尾开始查找子串,从指定位置开始。

substr(pos, len): 返回从指定位置开始的指定长度的子串:

compare(str): 比较字符串与另一字符串。

compare(pos1, len1, str): 比较字符串的子串与另一字符串。


赋值和连接:

operator=: 赋值操作符:

operator=std::string 类的赋值操作符,用于将一个字符串赋值给另一个字符串。这个操作符提供了一种方便的方式来复制一个字符串的内容到另一个字符串中。以下是一个使用例子:

#include <iostream>
#include <string>

int main() {
    // 使用默认构造函数创建空字符串
    std::string emptyString;

    // 检查字符串是否为空
    if (emptyString.empty()) {
        std::cout << "The string is empty." << std::endl;
    } else {
        std::cout << "The string is not empty." << std::endl;
    }

    // 输出字符串内容
    std::cout << "Empty String: " << emptyString << std::endl;

    return 0;
}
  • assign(str): 将字符串赋值为另一个字符串:

assign(str)std::string 类的成员函数,用于将一个字符串赋值给另一个字符串。这个函数将目标字符串的内容替换为给定字符串的内容。以下是一个使用例子:

#include <iostream>
#include <string>

int main() {
    // 定义两个字符串
    std::string str1 = "Hello";
    std::string str2 = "World";

    // 使用 assign 函数将 str1 的内容替换为 str2 的内容
    str1.assign(str2);

    // 输出结果
    std::cout << "str1: " << str1 << std::endl;

    return 0;
}

  • +=: 字符串连接操作符:

+=std::string 类的成员运算符,用于将一个字符串连接到另一个字符串的末尾。这个操作符提供了一种方便的方式来执行字符串连接操作。以下是一个使用例子:

#include <iostream>
#include <string>

int main() {
    // 定义两个字符串
    std::string str1 = "Hello, ";
    std::string str2 = "World!";

    // 使用 += 操作符将 str2 连接到 str1 的末尾
    str1 += str2;

    // 输出结果
    std::cout << "Concatenated String: " << str1 << std::endl;

    return 0;
}

Concatenated String: Hello, World!

访问和检查:

  • at(pos): 返回指定位置的字符,提供边界检查。

  • operator[]: 返回指定位置的字符,不进行边界检查。

  • front(): 返回字符串的第一个字符。

  • back(): 返回字符串的最后一个字符。

  • c_str(): 返回指向以 null 结尾的字符数组的指针。

  • data(): 返回指向字符串缓冲区的非 null 结尾字符数组的指针。

字符串信息:

  • length(), size(): 返回字符串的长度。

  • empty(): 检查字符串是否为空。

修改字符串:

  • insert(pos, str): 在指定位置插入字符串。

insert(pos, str)std::string 类的成员函数,用于在目标字符串的指定位置 pos 处插入另一个字符串 str。以下是一个使用例子:

#include <iostream>
#include <string>

int main() {
    // 定义一个字符串
    std::string str = "Hello, World!";

    // 在位置 7 插入字符串 "Beautiful "
    str.insert(7, "Beautiful ");

    // 输出结果
    std::cout << "Modified String: " << str << std::endl;

    return 0;
}
Modified String: Hello, Beautiful World!

 在这个例子中,str.insert(7, "Beautiful "); 使用了 insert 函数,在字符串的位置 7 处插入了字符串 "Beautiful "。现在,str 的内容变为了 "Hello, Beautiful World!"。

这个函数允许在指定位置插入其他字符串,提供了一种方便的方式来修改字符串的内容。插入操作会在指定位置处打开一个空间,以容纳要插入的字符串。

  • erase(pos, len): 删除从指定位置开始的指定长度的字符。

erase(pos, len)std::string 类的成员函数,用于删除目标字符串从指定位置 pos 开始的指定长度 len 的字符。以下是一个使用例子:

#include <iostream>
#include <string>

int main() {
    // 定义一个字符串
    std::string str = "Hello, World!";

    // 删除从位置 7 开始的长度为 5 的字符
    str.erase(7, 5);

    // 输出结果
    std::cout << "Modified String: " << str << std::endl;

    return 0;
}
Modified String: Hello, !

在这个例子中,str.erase(7, 5); 使用了 erase 函数,从字符串的位置 7 开始删除长度为 5 的字符。现在,str 的内容变为了 "Hello!"。

这个函数提供了一种方便的方式来修改字符串,删除不需要的部分。如果需要删除的长度超过了目标字符串的长度,erase 会删除尽可能多的字符,如果 len 大于目标字符串从 pos 开始的可用长度,则删除到字符串的末尾。

  • replace(pos, len, str): 用字符串替换从指定位置开始的指定长度的字符:

replace(pos, len, str)std::string 类的成员函数,用于用指定的字符串 str 替换目标字符串从指定位置 pos 开始的指定长度 len 的字符。以下是一个使用例子:

#include <iostream>
#include <string>

int main() {
    // 定义一个字符串
    std::string str = "Hello, World!";

    // 用字符串 "Universe" 替换从位置 7 开始的长度为 5 的字符
    str.replace(7, 5, "Universe");

    // 输出结果
    std::cout << "Modified String: " << str << std::endl;

    return 0;
}
Modified String: Hello, Universe!

在这个例子中,str.replace(7, 5, "Universe"); 使用了 replace 函数,从字符串的位置 7 开始,用字符串 "Universe" 替换了长度为 5 的字符。现在,str 的内容变为了 "Hello, Universe!"。

这个函数提供了一种方便的方式来修改字符串的一部分。如果需要替换的长度超过了目标字符串的长度,replace 会替换尽可能多的字符,如果 len 大于目标字符串从 pos 开始的可用长度,则替换到字符串的末尾。

  • push_back(c): 在字符串末尾添加字符。

  • pop_back(): 删除字符串末尾的字符。

查找和比较:

  • find(str, pos): 在字符串中查找子串,从指定位置开始:

find(str, pos)std::string 类的成员函数,用于在字符串中查找指定的子串,从指定位置 pos 开始。如果找到子串,则返回子串第一次出现的位置,否则返回 std::string::npos。以下是一个使用例子:

#include <iostream>
#include <string>

int main() {
    // 定义一个字符串
    std::string str = "Hello, World!";

    // 在字符串中查找子串 "World",从位置 7 开始
    size_t foundPos = str.find("World", 7);

    // 输出结果
    if (foundPos != std::string::npos) {
        std::cout << "Substring found at position: " << foundPos << std::endl;
    } else {
        std::cout << "Substring not found." << std::endl;
    }

    return 0;
}

Substring found at position: 7

在这个例子中,str.find("World", 7); 使用了 find 函数,从位置 7 开始在字符串中查找子串 "World"。因为 "World" 子串从位置 7 开始确实存在,所以 foundPos 将会被赋值为该子串在字符串中的位置。输出结果将是 "Substring found at position: 7"。

如果指定位置之后没有找到子串,find 函数将返回 std::string::npos,表示未找到。这个函数提供了一种在字符串中查找子串的方便方法。

  • rfind(str, pos): 从字符串末尾开始查找子串,从指定位置开始。

  • substr(pos, len): 返回从指定位置开始的指定长度的子串:

substr(pos, len)std::string 类的成员函数,用于返回从指定位置 pos 开始的指定长度 len 的子串。这个函数不修改原始字符串,而是返回一个新的 std::string 对象,包含从指定位置开始的指定长度的字符。以下是一个使用例子:

#include <iostream>
#include <string>

int main() {
    // 定义一个字符串
    std::string str = "Hello, World!";

    // 提取从位置 7 开始的长度为 5 的子串
    std::string substring = str.substr(7, 5);

    // 输出结果
    std::cout << "Substring: " << substring << std::endl;

    return 0;
}

Substring: World

在这个例子中,str.substr(7, 5); 使用了 substr 函数,从字符串的位置 7 开始提取长度为 5 的子串。现在,substring 包含了 "World"。

这个函数允许你从字符串中提取子串,而不必修改原始字符串。返回的 std::string 对象可以独立使用,方便在程序中进行进一步的操作。

  • compare(str): 比较字符串与另一字符串。

  • compare(pos1, len1, str): 比较字符串的子串与另一字符串。

相关推荐

  1. Python中锁常见

    2023-12-20 18:04:02       65 阅读
  2. Lambda 表达式常见

    2023-12-20 18:04:02       51 阅读
  3. STL:string常见

    2023-12-20 18:04:02       49 阅读
  4. npm 常见指令及

    2023-12-20 18:04:02       43 阅读
  5. Python中NumPy常见

    2023-12-20 18:04:02       37 阅读
  6. Python中format常见

    2023-12-20 18:04:02       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-20 18:04:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-20 18:04:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-20 18:04:02       82 阅读
  4. Python语言-面向对象

    2023-12-20 18:04:02       91 阅读

热门阅读

  1. golang 规则引擎gengine

    2023-12-20 18:04:02       66 阅读
  2. 浅学设计模式

    2023-12-20 18:04:02       56 阅读
  3. C函数生成一个与文本字符串相对应的字体矩阵

    2023-12-20 18:04:02       48 阅读
  4. jvm面试题

    2023-12-20 18:04:02       54 阅读
  5. OpenCV can’t augment image: 608 x 608

    2023-12-20 18:04:02       58 阅读
  6. 25个校招网络编程面试题

    2023-12-20 18:04:02       43 阅读
  7. 在vsCode 运行终端命令时提示 “无法加载文件”

    2023-12-20 18:04:02       70 阅读
  8. Matlab实现数据的无量纲化处理

    2023-12-20 18:04:02       54 阅读
  9. uni-app5+app打包,vue3开发vite.config.js的配置

    2023-12-20 18:04:02       56 阅读
  10. 《Unity5.x游戏开发基础》课后题-第一章

    2023-12-20 18:04:02       70 阅读
  11. 【C语言】6-6 数组循环右移 分数 20

    2023-12-20 18:04:02       57 阅读
  12. Vue2源码梳理:在 import Vue 时干了啥

    2023-12-20 18:04:02       45 阅读