- C 标准库
- C 标准库
- C++ 标准库
- C++ 库 - 首页
- C++ 库 - <fstream>
- C++ 库 - <iomanip>
- C++ 库 - <ios>
- C++ 库 - <iosfwd>
- C++ 库 - <iostream>
- C++ 库 - <istream>
- C++ 库 - <ostream>
- C++ 库 - <sstream>
- C++ 库 - <streambuf>
- C++ 库 - <atomic>
- C++ 库 - <complex>
- C++ 库 - <exception>
- C++ 库 - <functional>
- C++ 库 - <limits>
- C++ 库 - <locale>
- C++ 库 - <memory>
- C++ 库 - <new>
- C++ 库 - <numeric>
- C++ 库 - <regex>
- C++ 库 - <stdexcept>
- C++ 库 - <string>
- C++ 库 - <thread>
- C++ 库 - <tuple>
- C++ 库 - <typeinfo>
- C++ 库 - <utility>
- C++ 库 - <valarray>
- C++ STL 库
- C++ 库 - <array>
- C++ 库 - <bitset>
- C++ 库 - <deque>
- C++ 库 - <forward_list>
- C++ 库 - <list>
- C++ 库 - <map>
- C++ 库 - <multimap>
- C++ 库 - <queue>
- C++ 库 - <priority_queue>
- C++ 库 - <set>
- C++ 库 - <stack>
- C++ 库 - <unordered_map>
- C++ 库 - <unordered_set>
- C++ 库 - <vector>
- C++ 库 - <algorithm>
- C++ 库 - <iterator>
- C++ 高级库
- C++ 库 - <any>
- C++ 库 - <barrier>
- C++ 库 - <bit>
- C++ 库 - <chrono>
- C++ 库 - <cinttypes>
- C++ 库 - <clocale>
- C++ 库 - <condition_variable>
- C++ 库 - <coroutine>
- C++ 库 - <cstdlib>
- C++ 库 - <cstring>
- C++ 库 - <cuchar>
- C++ 库 - <charconv>
- C++ 库 - <cfenv>
- C++ 库 - <cmath>
- C++ 库 - <ccomplex>
- C++ 库 - <expected>
- C++ 库 - <format>
- C++ 库 - <future>
- C++ 库 - <flat_set>
- C++ 库 - <flat_map>
- C++ 库 - <filesystem>
- C++ 库 - <generator>
- C++ 库 - <initializer_list>
- C++ 库 - <latch>
- C++ 库 - <memory_resource>
- C++ 库 - <mutex>
- C++ 库 - <mdspan>
- C++ 库 - <optional>
- C++ 库 - <print>
- C++ 库 - <ratio>
- C++ 库 - <scoped_allocator>
- C++ 库 - <semaphore>
- C++ 库 - <source_location>
- C++ 库 - <span>
- C++ 库 - <spanstream>
- C++ 库 - <stacktrace>
- C++ 库 - <stop_token>
- C++ 库 - <syncstream>
- C++ 库 - <system_error>
- C++ 库 - <string_view>
- C++ 库 - <stdatomic>
- C++ 库 - <variant>
- C++ STL 库速查表
- C++ STL - 速查表
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
广告