c++ string 转 char* const char* char[]




#include <STDIO.H>
#include <iostream>
#include <MATH.H>
#include <string>
int main()
{
	/
	//string ======> char*  char[]
	/
	std::string source="source str";
	//printf(source);//输出失败  must be a pointer(printf)



	//转化成const char* 用 source.c_str();  source.data(); 
	const char* desPtr1 =source.c_str();//=====ok

	const char* desPtr1_1 =source.data();//=====ok
	printf("%s\n",desPtr1_1);
	std::cout<<desPtr1_1<< std::endl;


	//转 char* 直接转是不行的,得用string的 copy() 或者 strcpy()  一下写了两种开辟内存的方式,分别用了两种复制函数
	//char* desStr1=source;//can't convert
	//char* desStr1=source.c_str();//cant't convert

	char* desPtr1_2 =new char[source.length()+1];
	memset(desPtr1_2,0,source.length()+1);
	strcpy(desPtr1_2,source.c_str());
	delete desPtr1_2;
	

	char* desPtr2=(char*)malloc((source.length()+1)*sizeof(char));
	memset(desPtr2,0,source.length()+1);//注意初始化
	source.copy(desPtr2,source.length());
	printf("%s\n",desPtr2);
	delete desPtr2;

	/
	//char[] ======> string
	/
	char charArray[32] = {"abc"};//注意初始化的方式
	char cArray1_2[32];

	std::string charDes1(charArray);
	printf("%s",charDes1.c_str());
	

	system("pause");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值