名稱空間
變體
操作

std::strncmp

來自 cppreference.com
< cpp‎ | string‎ | byte
在標頭檔案 <cstring> 中定義
int strncmp( const char* lhs, const char* rhs, std::size_t count );

比較兩個可能為空終止的陣列的至多 count 個字元。比較以字典序進行。空字元之後的字元不參與比較。

結果的符號是所比較陣列中第一個不同字元對的值(兩者都被解釋為 unsigned char)之差的符號。

當訪問超出陣列 lhsrhs 的末尾時,行為是未定義的。當 lhsrhs 為空指標時,行為是未定義的。

目錄

[編輯] 引數

lhs, rhs - 指向可能為空終止的陣列的指標,用於比較
count - 要比較的最大字元數

[編輯] 返回值

如果 lhs 在字典順序上出現在 rhs 之前,則為負值。

如果 lhsrhs 比較相等,或者 count 為零,則返回零。

如果 lhs 在字典順序上出現在 rhs 之後,則為正值。

[編輯] 注意

std::strcollstd::strxfrm 不同,此函式不具有語言環境敏感性。

[編輯] 示例

#include <cstring>
#include <iostream>
 
void demo(const char* lhs, const char* rhs, int sz)
{
    const int rc = std::strncmp(lhs, rhs, sz);
    if (rc < 0)
        std::cout << "First " << sz << " chars of ["
                  << lhs << "] precede [" << rhs << "]\n";
    else if (rc > 0)
        std::cout << "First " << sz << " chars of ["
                  << lhs << "] follow [" << rhs << "]\n";
    else
        std::cout << "First " << sz << " chars of ["
                  << lhs << "] equal [" << rhs << "]\n";
}
 
int main()
{
    demo("Hello, world!", "Hello, everybody!", 13);
    demo("Hello, everybody!", "Hello, world!", 13);
    demo("Hello, everybody!", "Hello, world!", 7);
    demo("Hello, everybody!" + 12, "Hello, somebody!" + 11, 5);
}

輸出

First 13 chars of [Hello, world!] follow [Hello, everybody!]
First 13 chars of [Hello, everybody!] precede [Hello, world!]
First 7 chars of [Hello, everybody!] equal [Hello, world!]
First 5 chars of [body!] equal [body!]

[編輯] 參閱

比較兩個字串
(函式) [編輯]
比較兩個寬字串中的一定數量的字元
(函式) [編輯]
比較兩個緩衝區
(函式) [編輯]
根據當前區域設定比較兩個字串
(函式) [編輯]
C 文件 for strncmp