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

Jinku Hu 2023年1月30日 2021年4月29日
  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 <iostream>
#include <cstring>

using std::cout; using std::cin;
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 <iostream>
#include <cstring>

using std::cout; using std::cin;
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 <iostream>
#include <cstring>

using std::cout; using std::cin;
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 <iostream>
#include <cstring>

using std::cout; using std::cin;
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
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

相關文章 - C++ String