c++中char[]与char*的转换以及char*与数字互转 您所在的位置:网站首页 int与char转换 c++中char[]与char*的转换以及char*与数字互转

c++中char[]与char*的转换以及char*与数字互转

2024-06-17 06:21| 来源: 网络整理| 查看: 265

    在c/c++中,字符串操作不可避免,而且通常,char*或者char[]就能表示字符串,这个跟java语言有很大的差别,java中char是字符,string才是字符串,他们是完全不一样的概念。在c/c++中,虽然string也可以表示字符串,但是char*表示字符串还是更常见。

    既然char*和char[]都可以表示字符串,他们之间的转换是如何的呢?另外,如果字符串中都是数字,如何将他们转换为整数或者浮点数,反过来,数字如何转字符串,这个在日常的编程中,都是必须要掌握的技巧。

    先来总结一下char*与char[]的互转:

    一般来说,字符串的表示可以是char*,也可以是char[],这里呢,char*字符指针,表示的虽然是一个指针,但是也是一个字符串,它表示一个以'\0'结束的字符串。char[]表示的虽是一个字符数组,但同样也是一个字符串。

    他们都可以直接赋值:

    char* str = "hello";   这种表示方法是有问题的,如果在vs编辑器中,它会提示"hello"是一个常量,不可修改,需要const修饰符修饰,所以最终它只能表示为const char* str="hello";

     

    char str1[] = "hello";   这种表示法,编译器会认为它也是一个常量,并且给出了长度char str1[6]。这种表示方式,编译器不会强制我们在前面加上const修饰符。

    

    另外,char[]这种表示方法,我们可以直接在声明的时候,就给出长度,比如:

char str[6] = "12345";

    因为字符数组的最后一位需要用'\0'来填充,表示结束符,所以他的长度总是要在字符实际长度的基础上+1,这是一个永恒不变的定律。所以,在字符串拷贝的时候,我们经常见到这样的初始化表达式:  

char* str1 = new char[strlen(str)+1];

    而上面的char str[6] = "12345";字符串表示,之所以长度初始化为6,也就是这个原因了。这个长度,只能设置大,最少设置为刚刚好,多数情况下,我们会设置一个偏大的值,比如20、100等,如果我们不想设置,可以留空,让编译器自己来默认设置,就是如下的表示方式了:

char str[] = "hello,world.";

    这样,编译器会默认将数组长度设置为13。 

    那么问题来了,如果我们不注意,把长度设置小了怎么办? 编译阶段就会报错。

    

    1、  char[]  -> char*    :通过"="直接赋值

char str1[] = "hello"; char* str2 = str1; cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有