string 转为char* 作为函数参数回传后变成空字符串

int ReturnPoint(char* pStr)
{
	string temp = "hello"; //是一个临时变量,函数结束时,就会被释放

	//第一种方法
	pStr = (char*)temp.c_str(); //pStr最后指向的内容是乱值,因为temp对象被析构,其内容被处理

	//第二种方法
	strcpy(pStr,(char*)temp.c_str());

	//第三种方法
	memcpy(pStr,temp,strlen(temp));

	return 0;
}

int main()
{
	char buf[10];
	memset(buf,0,10);
	ReturnPoint(buf);
	cout<<buf;

	return 0;
}

第一种方法,buf为空。

第二种、第三种可以实现值回传。

 

注:strcpy和memcpy的区别(点击打开原文地址)

1、strcpy:字符串复制,不仅会复制其字符串就连其结尾的字符‘\0’也会被复制过去,其复制遇到\0后就结束了;

2、memcpy:是内存复制,他不仅可以复制字符串还可以复制任意内容,如字符串数组,结构体等;而且memcpy并不会遇到\0就结束,而是复制你在第三个参数中指定的字节数。

相对而言,memcpy要比strcpy用途要广泛的多,一般我们只需要复制字符串就可以选择strcpy,但是数组或者结构体,那就不要犹豫了,直接上memcpy吧。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值