您的位置:首页 > 其它

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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐