c++中char[]与char*的转换以及char*与数字互转 | 您所在的位置:网站首页 › int与char转换 › c++中char[]与char*的转换以及char*与数字互转 |
在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 实验室设备网 版权所有 |