C++中比较字符串主要有两种方法:①使用C风格的strcmp函数,需包含,通过返回值判断相等或大小;②使用std::string的比较运算符,需包含,语法更直观安全。

在C++中,比较两个字符串的方法主要有两种:使用C风格字符串的 strcmp 函数和C++标准库中 string 类型的比较运算符。它们的使用场景、语法和效率有所不同,下面详细对比说明。
strcmp函数:用于C风格字符串(char数组)
strcmp 是C语言中的字符串比较函数,定义在
函数原型如下:
int strcmp(const char* str1, const char* str2);
立即学习“C++免费学习笔记(深入)”;
返回值含义:
- 返回 0:表示 str1 和 str2 相等
- 返回小于 0 的值:str1 小于 str2(按字典序)
- 返回大于 0 的值:str1 大于 str2
示例代码:
#include iostream>
#include
using namespace std;
int main() {
char str1[] = "apple";
char str2[] = "banana";
if (strcmp(str1, str2) == 0) {
cout
} else {
cout
}
return 0;
}
string比较运算符:C++标准库推荐方式
C++ 中的 std::string 类重载了比较运算符(如 ==、!=、 等),可以直接使用这些运算符进行字符串比较,更加直观和安全。
需要包含头文件
示例代码:
#include
#include
using namespace std;
int main() {
string s1 = "hello";
string s2 = "hello";
if (s1 == s2) {
cout
}
if (s1
cout
}
return 0;
}
主要区别与使用建议
- 类型支持不同:strcmp 只能用于 C 风格字符串(const char* 或 char 数组),而 string 运算符适用于 std::string 对象。
- 安全性:strcmp 容易因忘记空字符或缓冲区溢出导致未定义行为;std::string 自动管理内存,更安全。
- 可读性:使用 == 判断相等比 strcmp(...)==0 更直观。
- 性能:两者在大多数实现中性能接近,但 std::string 在频繁操作时可能有轻微开销(构造/析构)。
- 混合使用注意:可以用 c_str() 将 string 转为 const char* 传给 strcmp,例如:strcmp(s1.c_str(), s2.c_str())。
基本上就这些。日常开发中优先使用 std::string 和其比较运算符,更简洁安全。只有在处理C接口或遗留代码时才需用 strcmp。










