- 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
广告