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