在 C++ 中查詢字串的長度

Jinku Hu 2023年10月12日
  1. 使用 length 函式在 C++ 中查詢字串的長度
  2. 使用 size 函式在 C++ 中查詢字串的長度
  3. 使用 while 迴圈在 C++ 中查詢字串的長度
  4. 使用 std::strlen 函式在 C++ 中查詢字串的長度
在 C++ 中查詢字串的長度

本文將介紹幾種如何在 C++ 中查詢字串長度的方法。

使用 length 函式在 C++ 中查詢字串的長度

C++ 標準庫提供了 std::basic_string 類,以擴充套件類似於 char 的序列,並實現了用於儲存和處理此類資料的通用結構。雖然,大多數人對 std::string 型別更熟悉,後者本身就是 std::basic_string<char> 的型別別名。std::string 提供了 length 內建函式來檢索儲存的 char 序列的長度。

#include <cstring>
#include <iostream>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main(int argc, char *argv[]) {
  string str1 = "this is random string oiwaoj";

  cout << "string: " << str1 << endl;
  cout << "length: " << str1.length() << endl;

  exit(EXIT_SUCCESS);
}

輸出:

string: this is random string oiwaoj
length: 28

使用 size 函式在 C++ 中查詢字串的長度

std::string 類中包含的另一個內建函式是 size,其行為與以前的方法相似。它不帶引數,並返回字串物件中 char 元素的數量。

#include <cstring>
#include <iostream>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main(int argc, char *argv[]) {
  string str1 = "this is random string oiwaoj";

  cout << "string: " << str1 << endl;
  cout << "length: " << str1.size() << endl;

  exit(EXIT_SUCCESS);
}

輸出:

string: this is random string oiwaoj
length: 28

使用 while 迴圈在 C++ 中查詢字串的長度

或者,可以實現自己的函式來計算字串的長度。在這種情況下,我們利用 while 迴圈將字串作為 char 序列遍歷,並在每次迭代時將計數器加 1。注意,該函式將 char*作為引數,並呼叫了 c_str 方法以在主函式中檢索此指標。當取消引用的指標值等於 0 時,迴圈停止,並且以 null 終止的字串實現保證了這一點。

#include <cstring>
#include <iostream>

using std::cin;
using std::cout;
using std::endl;
using std::string;

size_t lengthOfString(const char *s) {
  size_t size = 0;

  while (*s) {
    size += 1;
    s += 1;
  }

  return size;
}

int main(int argc, char *argv[]) {
  string str1 = "this is random string oiwaoj";

  cout << "string: " << str1 << endl;
  cout << "length: " << lengthOfString(str1.c_str()) << endl;

  exit(EXIT_SUCCESS);
}

輸出:

string: this is random string oiwaoj
length: 28

使用 std::strlen 函式在 C++ 中查詢字串的長度

最後,可以使用老式的 C 字串庫函式 strlen,該函式將單個 const char*引數作為我們自定義的函式-lengthOfString。當在不以空位元組結尾的 char 序列上呼叫時,這後兩種方法可能會出錯,因為它可能在遍歷期間訪問超出範圍的記憶體。

#include <cstring>
#include <iostream>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main(int argc, char *argv[]) {
  string str1 = "this is random string oiwaoj";

  cout << "string: " << str1 << endl;
  cout << "length: " << std::strlen(str1.c_str()) << endl;

  exit(EXIT_SUCCESS);
}

輸出:

string: this is random string oiwaoj
length: 28
作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 創辦人。Jinku 在機器人和汽車行業工作了8多年。他在自動測試、遠端測試及從耐久性測試中創建報告時磨練了自己的程式設計技能。他擁有電氣/ 電子工程背景,但他也擴展了自己的興趣到嵌入式電子、嵌入式程式設計以及前端和後端程式設計。

LinkedIn Facebook

相關文章 - C++ String