std::string_view介绍

std::string_view 是 C++17 新增的标准库类型,它是对字符串的非拥有性(non-owning)视图,允许在不复制字符串的情况下访问字符串的片段。std::string_view 提供了一种轻量级的方式来操作字符串,特别适用于对字符串进行查找、比较、子串提取等操作。

以下是 std::string_view 的主要特点和用法:

  1. 非拥有性std::string_view 不拥有字符串的内存,只是对字符串的引用或视图。它不负责内存的分配和释放,只是提供了对字符串的访问功能。

  2. 轻量级std::string_view 对象的大小很小(通常只包含指向字符串的指针和字符串的长度),因此在传递、返回和存储时的开销很小。

  3. 不可变性std::string_view 对象是不可变的,即不能修改字符串的内容。它提供了一系列的访问函数来获取字符串的信息,但不提供修改字符串的函数。

  4. 适用于字符串操作std::string_view 提供了丰富的成员函数和操作符重载,用于对字符串进行查找、比较、子串提取等操作。它可以与标准库中的算法和其他字符串类型(如 std::string)无缝配合使用。

  5. 性能优化:由于 std::string_view 不需要复制字符串的内容,因此在某些情况下可以提高性能,尤其是在频繁进行字符串操作时。

#include <iostream>
#include <string_view>

void printSubstring(std::string_view str_view, size_t start, size_t length) {
    if (start < str_view.length()) {
        std::cout << "Substring: " << str_view.substr(start, length) << std::endl;
    } else {
        std::cout << "Invalid start index." << std::endl;
    }
}

int main() {
    std::string str = "Hello, world!";
    std::string_view str_view(str); // 从字符串创建 string_view

    std::cout << "Original string: " << str_view << std::endl;
    std::cout << "Length: " << str_view.length() << std::endl;

    printSubstring(str_view, 7, 5); // 输出子串 "world"
    
    return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值