如何在不使用 strcmp 和方括号的情况下比较字符串?
Posted
技术标签:
【中文标题】如何在不使用 strcmp 和方括号的情况下比较字符串?【英文标题】:How to compare string without using strcmp and square brackets? 【发布时间】:2016-02-11 01:40:55 【问题描述】:例如,我有一个结构数组,其中包含很多名称,并且我有一个指向该结构的指针。而且我有一个输入让用户输入名称以匹配结构中的名称我应该怎么做而不使用字符串并且只使用指针?
struct people
char name[20];
people list[10];
people *ptr;
ptr = list;
char lists[20];
char *inpu;
inpu = lists;
cout << "Input name";
cin >> inpu;
我试过用这个,但效果不好。
If ( inpu == (*ptr).name)
cout << "1";
else cout << "2";
【问题讨论】:
不,即使它们具有相同的文本,它们也不是相同的字符串,因此也不是相同的指针。 是的,我尝试计算输入名称和结构名称指针指向的结果,它们显示相同,但它从来没有 cout 1。我该如何纠正它?你能帮我吗 我想尝试用指针解决它的另一种方法 @Hong 所以继续 - 去做吧。制定限制并要求其他人完成有什么意义? 使用关系运算符将字符数组转换为std::string
比较。
【参考方案1】:
如果你不想使用 strcmp,请使用 here 中的完全notstrcmp:
int totallynotstrcmp(const char* s1, const char* s2)
while(*s1 && (*s1==*s2))
s1++,s2++;
return *(const unsigned char*)s1-*(const unsigned char*)s2;
【讨论】:
(unsigned char)*s1 - (unsigned char)*s2
会更短更容易阅读
迂腐:(*(const unsigned char*)s1 > *(const unsigned char*)s2) - (*(const unsigned char*)s1 < *(const unsigned char*)s2);
不会溢出。处理具有相同范围的罕见unsigned char, unsigned
。以上是关于如何在不使用 strcmp 和方括号的情况下比较字符串?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不更改括号输出的情况下将 2.5 设为下标? ggplot 轴标签
如何在不使用数据集的情况下在 Matlab 上比较不同的面部图像?
如何在不使用 for 循环的情况下将列表中的所有项目与整数进行比较
如何在不使用collect()和for循环的情况下将一个(IP地址)的特定部分与RDD python pyspark中另一列中的其他IP地址进行比较