C++ String转char*

1.一开始用这种方法

string s1 = "abcdefg";
char *data;
int len = s1.length();
data = (char *)malloc((len+1)*sizeof(char));
s1.copy(data,len,0);
printf("%s",data);
cout<<data;

运行后发现转换后的是没有加结束符的,结果出来的是乱码。

string s1 = "abcdefg";
char *data;
data = const_cast<char*>(s1 .c_str());

这种也是会乱码

2.后来转为用这种

string s1 = "abcdefg";
char *data;
const int len =s1.length();
data = new char[len+1];
strcpy(data,s1.c_str());

但是编译后,提示strcpy不安全,改为用strcpy_s

strcpy_s(data,BUFFER_LENGTH,s1.c_str());

但是还是发现在函数结束后系统会提示堆被破坏。

3.结果重新用回第一种,加上结束符

string s1 = "abcdefg";
char *data;
int len = s1.length();
data = (char *)malloc((len+1)*sizeof(char));
s1.copy(data,len,0);
*(data+len)='\0';
printf("%s",data);
cout<<data;

运行成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值