簡體   English   中英

c++中查找字符串長度的說明

[英]Explanation of finding length of a string in c++

// c++解釋中求字符串長度的程序?

int main() {
    char name[] = "computer applications";
    char *cptr = name;
    while(*cptr != '\0') {
        cptr++;
    }
    cout << "length = " << cptr - name << endl;
    return 0;
}

字符串是由零終止字符'\0'終止的字符序列。

例如,如果您將使用字符串文字“Hello”初始化一個字符數組,例如

char s[] = "Hello";

那么這個聲明相當於

char s[] = { 'H', 'e', 'l', 'l', 'o', '\0' };

因此,字符串的長度計算為遇到終止零字符之前的字符數。 當遇到它時,意味着表達式*cptr包含該字符並且循環中斷了它的迭代。 這兩個指針之間的區別cptr - name給出了字符串的長度。

根據 C++ 標准(C++14、5.7 加法運算符)

5 當兩個指向同一個數組元素的指針object相減時,結果是兩個數組元素的下標之差。 結果的類型是實現定義的有符號整數類型; 此類型應與 header (18.2) 中定義為 std::ptrdiff_t 的類型相同。 與任何其他算術溢出一樣,如果結果不適合提供的空間,則行為未定義。 換句話說,如果表達式 P 和 Q 分別指向數組 object 的第 i 個和第 j 個元素,則表達式 (P)-(Q) 的值是 i-j,前提是該值適合類型為 std::ptrdiff_t 的 object。 此外,如果表達式 P 指向數組 object 的元素或數組 object 的最后一個元素,並且表達式 Q 指向同一數組 object 的最后一個元素,則表達式 ((Q)+1) -(P) 與 ((Q)-(P))+1 和 -((P)-((Q)+1)) 具有相同的值,並且如果表達式 P 指向超過數組 object 的最后一個元素,即使表達式 (Q)+1 不指向數組 object 的元素。 除非兩個指針都指向同一數組 object 的元素,或者指向數組 object 的最后一個元素,否則行為是未定義的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM