thinkphp企业网站源码网络广告案例以及分析
目录
C语言字符串比较
C语言字符比较
C++字符串比较
C语言字符串比较
在C语言中用于比较字符串的函数为strcmp函数,该函数定义在头文件<string.h>中,是一个标准库函数。strcmp函数的工作原理是逐字符比较两个字符串,直到找到不同的字符或遇到空符'\0'为止。函数的声明如下:
int strcmp(const char *s1, const char *s2);
函数接受两个字符串地址作为参数,即参数可以是指针,字符串常量或字符数组名。
函数返回值:
- 如果两个字符串相同,函数返回0;
- 如果第一个字符串按字母顺序排在第二个字符串之前,函数返回一个负数值;
- 如果第一个字符串按字母顺序排在第二个字符串之后,函数返回一个正数值;
注意:C++中大写字母和小写字母的ASCII码不同,小写字母的编码比大写字母大。如果两个相同的字符串,一个小写一个大写,则strcmp函数将返回一个非零值。
如果str1和str2为字符指针,则函数返回值存在以下关系:
字符串关系 | 表达式 | 表达式值 |
str1和str2相等 | strcmp(str1,str2)==0 | true |
str1和str2不相等 | strcmp(str1,str2) !=0 strcmp(str1,str2) | 都为true |
str1在str2的前面 | strcmp(str1,str2)<0 | true |
str1在str2的后面 | strcmp(str1,str2)>0 | true |
另外,如果str1和str2为字符数组,如果存储在字符数组中的字符串相同,不管str1和str2两个数组的大小是否相等,strcmp函数都将返回0。因为strcmp函数在逐字符比较时遇到空值字符就停止了。
下面代码为寻找"look"字符串的一个字符串比较实例,并输出遍历寻找过程中的所有字符串。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{char word[5] = "?ook";for (char ch = 'a'; strcmp(word, "look"); ch++){cout << word << endl;word[0] = ch;}cout << "End string is: " << word;return 0;
}
输出结果:
代码说明:
- 初始化数组时,设置数组的大小为5,这是因为字符串"?ook"最后需要加上一个空值字符来作为字符串的结束标志。
- 当使用ASCII字符编码集时,从a到z的字母的编码是连续的,所以可以使用递增操作符来遍历所有的字母。
C语言字符比较
C语言中虽然不能用关系操作符来比较字符串,但可以用它来比较字符,因为字符实际上是整型,下面代码为输出所有的字母。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{for (char ch= 'a';ch<='z';ch++){cout << ch << " ";}return 0;
}
C++字符串比较
C语句中不能用关系操作符比较字符串,但C++中的string类对象可以直接使用关系操作符来比较字符串。上面寻找"look"字符串的实例可以直接用关系操作符将string类对象与"look"字符串常量进行比较。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{string word = "?ook";for (char ch= 'a';word!="look";ch++){cout << word << endl;word[0] = ch;}cout << "End string is: " << word;return 0;
}