当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ strcmp()用法及代码示例


在本教程中,我们将借助示例了解 C++ strcmp() 函数。

C++ 中的 strcmp() 函数比较两个 null-terminating 字符串 (C-strings)。比较是按字典顺序进行的。它在cstring 头文件中定义。

示例

#include <cstring>
#include <iostream>
using namespace std;

int main() {
  char str1[] = "Megadeth";
  char str2[] = "Metallica";

  // compare str1 and str2 lexicographically
  int result = strcmp(str1, str2);

  cout << result;

  return 0;
}

// Output: -1

strcmp() 语法

用法:

strcmp(const char* lhs, const char* rhs);

这里,

  • lhs 代表左侧
  • rhs 代表右手边

参数:

strcmp() 函数采用以下参数:

  • lhs- 指向需要比较的C-string的指针
  • rhs- 指向需要比较的C-string的指针

返回:

strcmp() 函数返回:

  • a 正值如果第一个不同的字符lhs大于对应的字符rhs.
  • a 负值如果第一个不同的字符lhs小于对应的字符rhs.
  • 0如果lhsrhs是平等的。

strcmp() 原型

cstring 头文件中定义的strcmp() 原型为:

int strcmp( const char* lhs, const char* rhs );
  • strcmp() 按字典顺序比较lhsrhs 的内容。
  • 结果的符号是在 lhsrhs 中不同的第一对字符之间的差异符号。

strcmp() 未定义行为

的行为strcmp()不明确的如果:

  • lhsrhs 中的任何一个都不指向 C-strings(以空字符结尾的字符串)

示例 1:C++ strcmp()

#include <cstring>
#include <iostream>
using namespace std;

int main() {
  char str1[] = "Megadeth";
  char str2[] = "Metallica";

  // returns -1 because "Megadeth" < "Metallica" lexicographically
  int result = strcmp(str1, str2);

  cout << "Comparing " << str1 << " and " << str2 << ": " << result << endl;

  // returns 1 because  "Metallica" > "Megadeth" lexicographically
  result = strcmp(str2, str1);

  cout << "Comparing " << str2 << " and " << str1 << ": " << result << endl;

  // returns 1 because  "Megadeth" = "Megadeth" lexicographically
  result = strcmp(str1, str1);

  cout << "Comparing " << str1 << " and " << str1 << ": " << result;

  return 0;
}

输出

Comparing Megadeth and Metallica: -1
Comparing Metallica and Megadeth: 1
Comparing Megadeth and Megadeth: 0

示例 2:在用户定义的函数中使用 strcmp()

#include <cstring>
#include <iostream>
using namespace std;

// function to display the result of strcmp()
void display(char *lhs, char *rhs) {

  // compare display() parameters lhs and rhs   
  int result = strcmp(lhs, rhs);

  if (result > 0)
    cout << rhs << " precedes " << lhs << endl;
  else if (result < 0)
    cout << rhs << " follows " << lhs << endl;
  else
    cout << lhs << " and " << rhs << " are same" << endl;
}

int main() {
  char str1[] = "Armstrong";
  char str2[] = "Army";

  // lhs = str1, rhs = str2
  display(str1, str2);

  // lhs = str2, rhs = str1
  display(str2, str1);

  // lhs = str1, rhs = str1
  display(str1, str1);

  // lhs = str2, rhs = str2
  display(str2, str2);

  return 0;
}

输出

Army follows Armstrong
Armstrong precedes Army
Armstrong and Armstrong are same
Army and Army are same

相关用法


注:本文由纯净天空筛选整理自 C++ strcmp()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。