方法描述
此题如果使用string类型,也想用strcmp比较大小,可以使用string的成员函数c_str()把string转换为const char *,然后比较。
C++ 代码
#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;
}
其实string,可以直接比较大小的,
答案都是错的
没错啊
这个方法好厉害,我的办法是手写了一个strcmp.
你这个太强了,我记下来
我觉得这题有问题,比如你输入 A w w 和 [ w w,正常应该是后者大于前者,但是你这个程序执行结果是前者大于后者。
题里说这个只有字母和空格了
牛逼!
请问可以写成,cin>>x>>y;来读入吗
不可以
字符串中可能包含空格
为什么改成int s;
s = strcmp(a.s_str(),b.s_str());就会显示错误
也就是用s来代替了那一串长的是吗
我窝在长长的那一串也定义了s,定义了两次,重名了
记录返回值的变量定义成什么字母都行,但
c_str
是一个成员函数不要改它这样,明白了
请问加了a[i] += 32;这个是什么意思啊,不太懂
ASCII 码中, a 比 A 大32位(应该是),所以当碰见大写字母的时候统一加上32位,进而使其统一为小写字母,这样就方便比较了。
学废了学废了,太感谢了。
a.c_str(),b.c_str()
这是啥意思啊
a的字符串和b的字符串
首地址
谢谢大佬><
懂了
有空格
为什么不能cin读入