剑指offer第2题用到:C风格字符串和string

一些char [] 和char *到 string的转换知识

在这里插入图片描述

char p1[4] = {'a','a',' ','a'};//不包含结尾符
char p3[5] = "a aa";//包含一个结尾符
char p4[6] = "a a a";//包含一个结尾符
cout << sizeof(p3) / sizeof(p3[0]) << endl;
//C、C++中没有提供 直接获取数组长度的函数。,获取一个数组的大小,
//strlen可以获取C风格字符串大小,不包含结尾符合会出错 且不计算结尾符,
char *p2 = p1;
	
cout << strlen(p1) << endl;//结果随机数 找不到结尾符 因为以结尾符为判断
cout << strlen(p3) << endl;//结果正确 为4 
cout << strlen(p4) << endl;//结果5 

cout << sizeof(p3) / sizeof(p3[0]) << endl;//C、C++中没有提供直接获取数组长度的函数。,获取一个数组的大小,
                                          //所以采用sizeof是一种方法
                        
                        
//以下三种方法都可以char到string的转换
string S1(p1,4);
cout << S1 << endl;
string S2(p2,4);//p2是字符串指针也可以直接用
cout << S2 << endl;
string S3(p3,5);
cout << S3 << endl;
		

一些string 到 char *和char[]的转换知识

std::string str = "Hello Word";//字面值其实 是一种const char[],所有下面
                              //两种正确的格式char * 采用c_str()data()
char* p4 = (char*)str.c_str();
char* p5 = (char*)str.data();
或者
const char* p4 = str.c_str();
const char* p5 = str.data();
cout << p5 << endl;//与普通的数组指针不同,普通数组指针这里输出第一个元素的首地址
//这里直接输出"Hello Word"char [] 采用str.copy()
string str = "hmmq";
char p11[5];
str.copy((char*)p11, 4, 0);//这里4代表复制几个字符,0代表复制的位置,
 *(p11 + 5) = '\0';//注意手动加结束符!!!
cout << p11 << endl;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值