char字符串数组与string之间的转换,以及sizeof,strlen,length的区别
2013-05-23 15:06
661 查看
windowsAPI中,许多函数字符串参数都是char字符串数组,但是觉得string真的用起来很方便,所以就要了解它们之间的转换。
char cr1[10]="abc";//字符串数组类型,是以'\0'结尾的,可写可不写,但是必须占一个字节。
'\0'就是asc码表的里面用0代表的字符,也就是null,(如:'\101'是A)。
string str1="abc";
char转string,string str2(cr1);
str2.append(cr1);//字符串添加到末尾
str2.assign(cr1);//字符串付给本串
string转char,str1.c_str();返回的是const char *类型,所以是不能根据这个返回的指针来修改字符串内容的。
那么我们具体怎么应用呢,可以先把str1.c_str()用sprintf()把字符串拷贝到一个新的char数组中,当然新的字符串数组的长度要比返回的字符串长度大。
既然说到长度,就要说说sizeof和strlen的区别了。
sizeof():判断数据类型长度符。如sizeof(int)或者sizeof(i)(/i是int类型的),结果都会是一个int类型的长度(1个字长),以字节为单位,32位的系统int就是4。
注意:除了数组的名字用来做参数是数组的长度之外,其他的,不管是什么指针什么类型,都是那个变量的长度。
比如sizeof(cr1)/sizeof(&cr1),就是10,意思就是这个数组类型的长度(不管里面有什么个字符)。
如果是char *cp=cr1;siztof(cp);意思就是这个指针类型长度是多少。如果是sizeof(str1),那么就是string类型的长度,string是8个字长。
strlen():求的是char字符串的实际长度(string要转成char),它求得方法是从开始到遇到第一个'\0'(不包括'\0'),strlen(cr1),结果就是3。
char cr1[10]="abc";//字符串数组类型,是以'\0'结尾的,可写可不写,但是必须占一个字节。
'\0'就是asc码表的里面用0代表的字符,也就是null,(如:'\101'是A)。
string str1="abc";
char转string,string str2(cr1);
str2.append(cr1);//字符串添加到末尾
str2.assign(cr1);//字符串付给本串
string转char,str1.c_str();返回的是const char *类型,所以是不能根据这个返回的指针来修改字符串内容的。
那么我们具体怎么应用呢,可以先把str1.c_str()用sprintf()把字符串拷贝到一个新的char数组中,当然新的字符串数组的长度要比返回的字符串长度大。
既然说到长度,就要说说sizeof和strlen的区别了。
sizeof():判断数据类型长度符。如sizeof(int)或者sizeof(i)(/i是int类型的),结果都会是一个int类型的长度(1个字长),以字节为单位,32位的系统int就是4。
注意:除了数组的名字用来做参数是数组的长度之外,其他的,不管是什么指针什么类型,都是那个变量的长度。
比如sizeof(cr1)/sizeof(&cr1),就是10,意思就是这个数组类型的长度(不管里面有什么个字符)。
如果是char *cp=cr1;siztof(cp);意思就是这个指针类型长度是多少。如果是sizeof(str1),那么就是string类型的长度,string是8个字长。
strlen():求的是char字符串的实际长度(string要转成char),它求得方法是从开始到遇到第一个'\0'(不包括'\0'),strlen(cr1),结果就是3。
相关文章推荐
- char字符串数组与string之间的转换,以及sizeof,strlen,length的区别
- Java String,int,Integer,char 类型转换 ,sizeof,strlen,length的区别 .
- 字符串和字符数组的区别以及sizeof和strlen的区别
- 数组与字符串长度sizeof()、strlen()、string的length()和size()
- C/C++中求字符串数组的大小---sizeof,strlen,string,length()
- 修改字符串以及string 与char* char[]之间的转换
- C++ 数组与字符串长度sizeof()、strlen()、string的length()和size()
- string,char,char*,char a[] 占字节数, 以及sizeof,strlen(),str.length()的用法
- string,char,char*,char a[] 占字节数, 以及sizeof,strlen(),str.length()的用法
- 数组与字符串长度sizeof()、strlen()、string的length()和size()
- string类字符串,char数组,string数组,StringBuffer之间如何相互转换
- 数组与字符串长度sizeof()、strlen()、string的length()和size()
- 数组与字符串长度sizeof()、strlen()、string的length()和size()
- string和char数组之间的转换
- PInvoke复习之深入理解char*与wchar_t*与string以及wstring之间的相互转换
- 深入理解c++中char*与wchar_t*与string以及wstring之间的相互转换
- Java中不同进制的表现形式以及int,char,String之间的转换
- char*数组(c类型字符串)和c++中的string的转换、字符串比较、char*数组等问题
- 数值型和字符型转换,以及string--char*--CString之间的转换
- 『C++ Primer学习笔记』Chapter 3——string对象、vector对象以及数组的配套类型,C风格字符串问题和处理区别