C++ 庫 - <cstring>



C++ 中的 <cstring> 標頭檔案提供了一組用於操作 C 風格字串(以 null 結尾的字元陣列)並在記憶體塊上執行操作的函式。C 風格字串是以 null 字元(\0)結尾的字元陣列,表示字串的結束。<cstring> 庫繼承自 C 程式語言,是 C++ 標準庫的一部分。

C 風格字串與 C++ 字串物件 (std::string) 不同,因為它們是低階的,並且依賴於原始記憶體操作。在效能方面,使用 C 風格字串可能比使用更高級別的 C++ 字串類更有效,因為它們允許直接控制記憶體。

<cstring> 庫提供了各種用於操作 C 風格字串的函式,例如複製、連線、比較和搜尋。這些函式將 C 風格字串視為字元陣列,並在到達 null 終止符之前執行操作。

包含 <cstring> 標頭檔案

要在 C++ 程式中包含 <cstring> 標頭檔案,可以使用以下語法。

#include <cstring>

<cstring> 標頭檔案的函式

以下是 <cstring> 標頭檔案中所有函式的列表。

複製

這些函式用於操作和複製 C 風格字串或記憶體塊。每個函式都有其自己的用途,具體取決於是否使用以 null 結尾的字串或原始記憶體塊。

常用的 C++ <cstring> 複製函式如下所示,以及它們的描述。

序號 函式及描述
1 memcpy

用於將一個緩衝區複製到另一個緩衝區。

2 memmove

用於將一個緩衝區移動到另一個緩衝區。

3 strcpy

用於將一個字串複製到另一個字串。

4 strncpy

用於將一個字串中一定數量的字元複製到另一個字串。

將一個字串複製到另一個字串

在下面的示例中,我們將一個字串複製到另一個字串。

#include <iostream>
#include <cstring>
int main() {
   char x[] = "Welcome";
   char y[50];
   strcpy(y, x);
   std::cout << "Result : " << y << std::endl;
   return 0;
}

輸出

以上程式碼的輸出如下所示:

Result : Welcome

連線

它是將兩個或多個字串連線在一起形成單個字串的過程。常用的 C++ <cstring> 連線函式如下所示,以及它們的描述。

序號 函式及描述
1 strcat

用於連線兩個字串。

2 strncat

用於連線兩個字串中一定數量的字元。

連線兩個字串

考慮以下示例,我們將連線兩個字串。

#include <iostream>
#include <cstring>
int main() {
   char a[12] = "123";
   char b[] = "456";
   strcat(a, b);
   std::cout << "Result: " << a << std::endl;
   return 0;
}

輸出

以下是以上程式碼的輸出:

Result: 123456

比較

比較函式用於比較字串、確定它們的順序並檢查是否相等。常用的 C++ <cstring> 比較函式如下所示,以及它們的描述。

序號 函式及描述
1 memcmp

用於比較兩個緩衝區。

2 strcmp

用於比較兩個字串。

3 strcoll

根據當前區域設定比較兩個字串。

4 strncmp

比較兩個字串中一定數量的字元。

5 strxfrm

用於使用區域設定轉換字串。

比較兩個字串

讓我們看一下下面的示例,我們將比較兩個字串。

#include <iostream>
#include <cstring>
int main() {
   char a[] = "Hi";
   char b[] = "Hello";
   int x = strcmp(a, b);
   if (x < 0) {
      std::cout << a << " is less than " << b << std::endl;
   } else if (x > 0) {
      std::cout << a << " is greater than " << b << std::endl;
   } else {
      std::cout << a << " is equal to " << b << std::endl;
   }
   return 0;
}

輸出

如果我們執行以上程式碼,它將生成以下輸出:

Hi is greater than Hello

搜尋

搜尋是指在資料集合中查詢特定專案的過程。常用的 C++ <cstring> 搜尋函式如下所示,以及它們的描述。

序號 函式及描述
1 memchr

在陣列中搜索字元的第一次出現。

2 strchr

用於查詢字元的第一次出現。

3 strcspn

返回最大初始段的長度,該段僅由在另一個位元組字串中找不到的字元組成。

4 strpbrk

查詢一組分隔符中任何字元的第一個位置。

5 strrchr

用於查詢字元的最後一次出現。

6 strspn

返回最大初始段的長度,該段僅由在另一個位元組字串中找到的字元組成。

7 strstr

用於查詢字元的最後一次出現。

查詢第一次出現

以下是示例,我們將查詢字串中字元 'L' 的第一次出現。

#include <iostream>
#include <cstring>
int main() {
   char x[] = "TUTORIALSPOINT";
   char y = 'L';
   char * z = strchr(x, y);
   if (z) {
      std::cout << "Result : " << (z - x) << std::endl;
   } else {
      std::cout << "Character Not Found." << std::endl;
   }
   return 0;
}

輸出

以上程式碼的輸出如下所示:

Result : 7
廣告