跳到主要内容

C++ strncmp() 字符串长度比较函数

strncmp() 函数原型

int strncmp( const char* lhs, const char* rhs, size_t count );

strncmp() 函数接受三个参数:lhsrhscount。它按字典顺序比较 lhsrhs 的内容,最多比较 count 个字符。结果的符号是 lhsrhs 中第一对不同字符之间差异的符号。

如果 lhsrhs 其中任何一个不指向以空字符结尾的字符串,strncmp() 的行为是未定义的。

它定义在 <cstring> 头文件中。

strncmp() 参数

  • lhs 和 rhs:指向要比较的以空字符结尾的字符串的指针。
  • count:要比较的最大字符数。

strncmp() 返回值

strncmp() 函数返回:

  • 正值,如果 lhs 中第一个不同的字符大于 rhs 中相应的字符。
  • 负值,如果 lhs 中第一个不同的字符小于 rhs 中相应的字符。
  • 0​,如果 lhsrhs 的前 count 个字符相等。

示例:strncmp() 函数如何工作

#include <cstring>
#include <iostream>

using namespace std;

void display(char *lhs, char *rhs, int result, int count)
{
if(result > 0)
cout << rhs << " 在 " << lhs << " 前" << endl;
else if (result < 0)
cout << lhs << " 在 " << rhs << " 前" << endl;
else
cout << "前 " << count << " 个字符 " << lhs << " 和 " << rhs << " 相同" << endl;
}

int main()
{
char lhs[] = "Armstrong";
char rhs[] = "Army";
int result;

result = strncmp(lhs,rhs,3);
display(lhs,rhs,result,3);

result = strncmp(lhs,rhs,4);
display(lhs,rhs,result,4);

return 0;
}

当你运行程序时,输出将是:

3 个字符 Armstrong 和 Army 相同
Armstrong 在 Army 前