C++ 库 - <string_view>



C++ 中的<string_view> 头文件提供了用于高效处理字符串的低级函数和操作,避免不必要的复制,并传递子字符串而无需创建临时对象。

通过避免字符串的分配和复制来减少开销,这对于大型数据集或字符串操作特别有用。此头文件是字符串库的一部分。

包含 <string_view> 头文件

要在 C++ 程序中包含 <string_view> 头文件,可以使用以下语法。

#include <string_view>

<string_view> 头文件的函数

以下是 <string_view> 头文件中所有函数的列表。

比较运算符

比较运算符允许在两个视图之间进行词法比较。

序号 函数及描述
1 operator==

此函数检查两个对象在词法上是否相等。

2 operator!=

此函数检查两个对象在词法上是否不相等。

3 operator<

此函数检查第一个对象是否小于第二个对象。

4 operator>

此函数检查第一个对象是否大于第二个对象。

5 operator<=

此函数检查第一个对象是否小于或等于第二个对象。

6 operator>=

此函数检查第一个对象是否大于或等于第二个对象。

7 operator<=>

三路比较运算符,也称为宇宙飞船运算符,用于词法比较两个对象。

operator== 的用法

在下面的示例中,我们将使用 operator== 来检查两个 std::string_view 对象是否包含相同的文本。

#include <iostream>
#include <string_view>
int main() {
    std::string_view view1 = "Hello";
    std::string_view view2 = "Hello";
    std::string_view view3 = "World";
    if (view1 == view2) {
        std::cout << "view1 and view2 are equal.\n";
    } else {
        std::cout << "view1 and view2 are not equal.\n";
    }
    if (view1 == view3) {
        std::cout << "view1 and view3 are equal.\n";
    } else {
        std::cout << "view1 and view3 are not equal.\n";
    }
    return 0;
}

输出

如果我们运行以上代码,它将生成以下输出:

view1 and view2 are equal.
view1 and view3 are not equal.

交换函数

序号 函数及描述
1 swap

此函数交换两个对象的数值。

交换两个对象的內容

在下面的示例中,我们将使用 swap() 来交换两个 std::string_view 对象的值。

#include <iostream>
#include <string_view>
int main() {
    std::string_view view1 = "Apple";
    std::string_view view2 = "Banana";

    std::cout << "Before swap:\n";
    std::cout << "view1: " << view1 << "\n";
    std::cout << "view2: " << view2 << "\n";
    view1.swap(view2);

    std::cout << "\nAfter swap:\n";
    std::cout << "view1: " << view1 << "\n";
    std::cout << "view2: " << view2 << "\n";
    return 0;
}

输出

如果我们运行以上代码,它将生成以下输出:

Before swap:
view1: Apple
view2: Banana

After swap:
view1: Banana
view2: Apple

范围访问函数

范围访问函数提供迭代器来遍历字符序列。

序号 函数及描述
1 begin & cbegin

这些函数返回指向容器或数组开头的迭代器。

2 end & cend

这些函数返回指向容器或数组末尾的迭代器。

3 rbegin & crbegin

这些函数返回指向容器或数组开头的反向迭代器。

4 rend & crend

这些函数返回容器或数组的反向末尾迭代器。

5 size & ssize

这些函数返回容器或数组的大小。

6 empty

此函数检查容器是否为空。

7 data

此函数获取指向底层数组的指针。

遍历字符

在下面的示例代码中,我们将使用 begin 和 end 来遍历 std::string_view 中的字符。

#include <iostream>
#include <string_view>
int main() {
    std::string_view view = "Hello";
    std::cout << "Characters in view: ";
    for (auto it = view.begin(); it != view.end(); ++it) {
        std::cout << *it << ' ';
    }
    return 0;
}

输出

如果我们运行以上代码,它将生成以下输出:

Characters in view: H e l l o 
广告