关于compare() 函数和 strcmp()函数的补充
这两个函数由于函数原型不一样,因此参数也是不一样的。strcmp() 函数只能用于char字符串的比较,而string的比较则只能用compare函数
strcmp()函数
这个函数我们不能被名字误导,相反,该函数不嫩用于string的比较,其函数原型是strcmp(const char s1,const char s2),我们可以这样记忆,这个函数是在C语言的时候创建的,因此,不适用于string类。
函数通常这样用:
char str1[10000];
char str2[10000];
if (strcmp(str1, str2) == 0)
{
cout << "您输入的两个字符串相同" << endl;
}
compare()函数
由于C++特有的string的类,我们创建compare函数来比较来两个string之间的ASCII值。
函数用法示例:
string s1;
string s2;
if ( (s1.compare(s2)) == 0 )
{
cout << "您输入的两个字符串相同" << endl;
}
二者的特性
通常情况下,基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1[HTML_REMOVED]str2,则返回正数。
示例(使用本题作为最后的示例)[doge]:
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int main()
{
string a, b;
getline(cin, a);
getline(cin, b);
for (int i = 0; i < a.size(); i++)
if (a[i] >= 65 && a[i] <= 90)
a[i] += 32;
for (int i = 0; i < b.size(); i++)
if (b[i] >= 65 && b[i] <= 90)
b[i] += 32;
int res = a.compare(b);
if (res < 0) cout << "<" << endl;
else if (res == 0) cout << "=" << endl;
else cout << ">" << endl;
return 0;
}
//此题如果使用string类型,也想用strcmp比较大小,可以使用string的成员函数c_str()把string转换为const char *,然后比较。
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main()
{
string a,b;
getline(cin,a);
getline(cin,b);
for (int i = 0; i < a.size(); i ++)
if (a[i] >= 'A' && a[i] <= 'Z') a[i] += 32;
for (int i = 0; i < b.size(); i ++)
if (b[i] >= 'A' && b[i] <= 'Z') b[i] += 32;
int c;
c = strcmp(a.c_str(),b.c_str());
if(c < 0) cout << "<";
if(c == 0) cout << "=";
if(c > 0) cout << ">";
return 0;
}