C++常用字符串函数(strlen,strcpy_s,strcat_s,strcmp,strstr 等)

在C++中,虽然标准库(STL)提供了丰富的字符串处理功能(如std::string类),但有时候了解和使用C风格的字符串函数(如strlen, strcpy_s, strcat_s, strcmp, strstr)也是很有必要的,尤其是在与C代码接口或处理底层系统调用时。下面我将逐一介绍这些函数的用法和注意事项。

strlen

功能:计算字符串的长度(不包括结尾的\0)。

原型:size_t strlen(const char *str);

使用示例:

#include <cstdio>  
#include <cstring>  
  
int main() {  
    const char* str = "Hello, World!";  
    size_t len = strlen(str);  
    printf("Length of '%s' is %zu\n", str, len);  
    return 0;  
}
strcpy_s

功能:安全地将源字符串复制到目标字符串中,可以指定目标缓冲区的大小,以防止缓冲区溢出。

原型:errno_t strcpy_s(char *dest, size_t destsz, const char *src);

使用示例:

#include <cstdio>  
#include <cstring>  
  
int main() {  
    char dest[20];  
    const char* src = "Hello, World!";  
    errno_t err = strcpy_s(dest, sizeof(dest), src);  
    if (err == 0) {  
        printf("Copied '%s' to dest\n", dest);  
    } else {  
        printf("Error copying string\n");  
    }  
    return 0;  
}
strcat_s

功能:安全地将源字符串追加到目标字符串的末尾,并指定目标缓冲区的大小。

原型:errno_t strcat_s(char *dest, size_t destsz, const char *src);

使用示例:

#include <cstdio>  
#include <cstring>  
  
int main() {  
    char dest[20] = "Hello, ";  
    const char* src = "World!";  
    errno_t err = strcat_s(dest, sizeof(dest), src);  
    if (err == 0) {  
        printf("Appended '%s' to '%s'\n", src, dest);  
    } else {  
        printf("Error appending string\n");  
    }  
    return 0;  
}
strcmp

功能:比较两个字符串。

原型:int strcmp(const char *str1, const char *str2);

如果返回值 < 0,则表示str1小于str2。
如果返回值 = 0,则表示str1等于str2。
如果返回值 > 0,则表示str1大于str2。
使用示例:

#include <cstdio>  
#include <cstring>  
  
int main() {  
    const char* str1 = "Hello";  
    const char* str2 = "World";  
    int result = strcmp(str1, str2);  
    if (result < 0) {  
        printf("'%s' is less than '%s'\n", str1, str2);  
    } else if (result > 0) {  
        printf("'%s' is greater than '%s'\n", str1, str2);  
    } else {  
        printf("'%s' is equal to '%s'\n", str1, str2);  
    }  
    return 0;  
}
strstr

功能:在一个字符串中查找第一次出现另一个字符串的位置。

原型:char *strstr(const char *str1, const char *str2);

如果找到,则返回第一次出现的str2在str1中的位置(指针)。
如果没有找到,则返回NULL。
使用示例:

#include <cstdio>  
#include <cstring>  
  
int main() {  
    const char* str = "Hello, World!";  
    const char* substr = "World";  
    char* result = strstr(str, substr);  
    if (result != NULL) {  
        printf("'%s' found in '%s'\n", substr, str);  
    } else {  
        printf("'%s' not found in '%s'\n", substr, str);  
    }  
    return 0;  
}

这些函数是处理C风格字符串时常用的工具,但在C++项目中,推荐优先使用std::string类,因为它更安全、更灵活。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值