std::strncmp
來自 cppreference.com
在標頭檔案 <cstring> 中定義 |
||
int strncmp( const char* lhs, const char* rhs, std::size_t count ); |
||
比較兩個可能為空終止的陣列的至多 count 個字元。比較以字典序進行。空字元之後的字元不參與比較。
結果的符號是所比較陣列中第一個不同字元對的值(兩者都被解釋為 unsigned char)之差的符號。
當訪問超出陣列 lhs 或 rhs 的末尾時,行為是未定義的。當 lhs 或 rhs 為空指標時,行為是未定義的。
目錄 |
[編輯] 引數
lhs, rhs | - | 指向可能為空終止的陣列的指標,用於比較 |
count | - | 要比較的最大字元數 |
[編輯] 返回值
如果 lhs 在字典順序上出現在 rhs 之前,則為負值。
如果 lhs 和 rhs 比較相等,或者 count 為零,則返回零。
如果 lhs 在字典順序上出現在 rhs 之後,則為正值。
[編輯] 注意
與 std::strcoll 和 std::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
|