C/C++ 字符串的转换、比较、查找、拼接

 字符串是计算机编程中最基本的数据类型之一,用于存储文本数据。Java和C语言都支持字符串操作,但是它们在实现上有一些不同之处。


  • 字符串转int:
int main() {
    // 字符串转 int
    char *num = "520";
    int result = atoi(num); // 相当于 java 的 Integer.valueOf()
    LOGI("result:%d", result)

    return 0;
}

 atoi:C语言的一个 API,将字符串转为整形,转换失败则为 0


  • 字符串的比较:
int main() {
    // 字符串的比较
    char *str1 = "wk";
    char *str2 = "bb";
    int resultC = strcmp(str1, str2); // 相当于 java 的 String.equals()
    if (!resultC) { // 0代表相等
        LOGI("相等")
    } else {
        LOGI("不相等")
    }

    return 0;
}

 strcmp:C语言的一个 API,对比两个字符串的值是否相等,相等返回 0


  • 查找字符串:
int main() {
    // 查找字符串
    char *text = "name is kang";
    char *subText = "q";
    char *pop = strstr(text, subText);
    if (pop) {
        LOGI("查找到了,pop的值是:%s", pop)
    } else {
        LOGI("没查找到")
    }

    return 0;
}

 strstr:C语言的一个 API,从 第一个参数 中查找是否存在 第二个参数,不存在则返回 NULL


  • 字符串的拼接:
int main() {
    // 字符串拼接
    char destination[25]; // 容器大小
    char *blank = "--到--", *CPP = "C++", *Java = "Java";
    strcpy(destination, CPP);   // 先 Copy 操数组里面去
    strcat(destination, blank); // 然后在拼接
    strcat(destination, Java);  // 然后在拼接
    LOGI("拼接后的结果:%s", destination)

    return 0;
}

 strcpy:C语言的一个 API,将 第二个参数 值拷贝到 第一个参数 中

strcat:C语言的一个 API,将 第二个参数 值拼接到 第一个参数 中


  • 字符串的大小写转换:
void lower(char *dest, char *name); // 函数声明

int main() {
    // 大小写转换
    char dest[20]; // 容器大小
    char *name = "aBcDeF";
    lower(dest, name);
    LOGI("小写转换后:%s", dest)

    return 0;
}

void lower(char *dest, char *name) {
    char *temp = name; // 临时指针,若要对传进来的指针进行移动,最好先定义一个临时指针
    while (*temp) {
        *dest = tolower(*temp);
        temp++;
        dest++;
    }
    *dest = '\0'; // 字符数组需要加上 \0 来结束,否则会多很多系统值
}

 tolower:C语言的一个 API,将传入的字符转换为小写


C语言中,字符串是作为字符数组存储的,也就是一组字符的集合,以'\0'结尾。而在 Java 中,字符串是一个对象,使用String类来表示字符串,底层实现也是字符数组

这样的设计使Java的字符串操作更加方便,因为字符串对象可以直接调用方法进行操作,而不需要考虑底层的存储细节。

手写完这些之后,深刻意识到,java 的底层就是 C 这一句话,因为这些功能 java 一行就搞定了的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值