用c++写一个string的strcmp函数的模拟实现
时间: 2024-09-11 22:02:46 浏览: 39
在C++中,`strcmp` 函数是标准库中的一个用于比较两个C风格字符串的函数,它的原型通常位于 `<cstring>` 头文件中。下面是一个简单的模拟实现,它逐个字符比较两个字符串直到发现不同的字符或者到达字符串的结尾:
```cpp
#include <iostream>
// 函数声明
int myStrcmp(const char* str1, const char* str2);
int main() {
const char* str1 = "Hello";
const char* str2 = "World";
int result = myStrcmp(str1, str2);
if (result < 0) {
std::cout << str1 << " is less than " << str2 << std::endl;
} else if (result > 0) {
std::cout << str1 << " is greater than " << str2 << std::endl;
} else {
std::cout << str1 << " is equal to " << str2 << std::endl;
}
return 0;
}
// 函数定义
int myStrcmp(const char* str1, const char* str2) {
while (*str1 && (*str1 == *str2)) {
str1++;
str2++;
}
return *(const unsigned char*)str1 - *(const unsigned char*)str2;
}
```
上述实现中,`myStrcmp` 函数会返回三种可能的值:
- 小于0的值:如果第一个字符串在字典顺序上小于第二个字符串;
- 大于0的值:如果第一个字符串在字典顺序上大于第二个字符串;
- 等于0:如果两个字符串相等。
需要注意的是,在比较字符时,将指针指向的`char`类型转换为`unsigned char`类型,这是为了确保比较操作能够在所有平台上以一致的方式执行,因为`char`类型在不同平台上可能表示有符号或无符号的字符。
阅读全文