char字符串数组与string之间的转换,以及sizeof,strlen,length的区别

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。

string.length:返回实例中 Char 对象的个数




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值