📅  最后修改于: 2023-12-03 15:07:37.882000             🧑  作者: Mango
在 C++ 中,有多种方式可以比较两个字符串。本文将介绍常见的五种方式,并提供相应的代码示例。
最常见的比较方法就是用 == 运算符比较。这种方法只需要将两个字符串作为运算符的操作数即可,返回值是一个布尔值。
#include <iostream>
#include <string>
int main()
{
std::string str1 = "hello";
std::string str2 = "world";
if (str1 == str2)
{
std::cout << "str1 is equal to str2" << std::endl;
}
else
{
std::cout << "str1 is not equal to str2" << std::endl;
}
return 0;
}
另一种比较方法是用 compare
方法比较。这种方法需要调用字符串对象的 compare
方法,并将要比较的字符串作为参数传递进去。返回值是一个整数,负数表示调用对象小于参数,正数表示调用对象大于参数,零表示两者相等。
#include <iostream>
#include <string>
int main()
{
std::string str1 = "hello";
std::string str2 = "world";
int result = str1.compare(str2);
if (result == 0)
{
std::cout << "str1 is equal to str2" << std::endl;
}
else if (result > 0)
{
std::cout << "str1 is greater than str2" << std::endl;
}
else
{
std::cout << "str1 is less than str2" << std::endl;
}
return 0;
}
如果只需要判断两个字符串的大小关系,还可以用 < 运算符比较。这种方法需要将两个字符串作为运算符的操作数,返回值是一个布尔值。
#include <iostream>
#include <string>
int main()
{
std::string str1 = "hello";
std::string str2 = "world";
if (str1 < str2)
{
std::cout << "str1 is less than str2" << std::endl;
}
else if (str1 > str2)
{
std::cout << "str1 is greater than str2" << std::endl;
}
else
{
std::cout << "str1 is equal to str2" << std::endl;
}
return 0;
}
除了用字符串对象自带的方法比较,还可以用 C++ 标准库提供的 strncmp 函数比较。这种方法需要将要比较的字符串以及需要比较的字符数作为参数传递进去,返回值同样是一个整数。
#include <iostream>
#include <cstring>
int main()
{
char str1[] = "hello";
char str2[] = "world";
int result = std::strncmp(str1, str2, 3);
if (result == 0)
{
std::cout << "str1 is equal to str2" << std::endl;
}
else if (result > 0)
{
std::cout << "str1 is greater than str2" << std::endl;
}
else
{
std::cout << "str1 is less than str2" << std::endl;
}
return 0;
}
最后,如果需要忽略大小写比较两个字符串,可以使用 boost 库提供的 iequals 函数。这种方法需要将要比较的字符串作为参数传递进去,返回值同样是一个布尔值。
#include <iostream>
#include <boost/algorithm/string.hpp>
int main()
{
std::string str1 = "HELLO";
std::string str2 = "world";
if (boost::algorithm::iequals(str1, str2))
{
std::cout << "str1 is equal to str2" << std::endl;
}
else
{
std::cout << "str1 is not equal to str2" << std::endl;
}
return 0;
}
这里需要注意的是,使用 boost 库需要在编译前链接库文件。
以上就是在 C++ 中比较两个字符串的常见方法。根据实际场景的需要,可以选择不同的方法来实现字符串比较。