string与char*和char[]的互相转换

1.string转向char*

把string转换为char* 有3种方法:

第一种:data()

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string str = "123456";
	const char *p=str.data();
	//or 
	//char *p=(char*)str.data();
	//请一定要注意这两种写法
	cout << p;//输出:123456
	return 0;
}
第二种:c_str()

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string str = "123456";
	const char *p = str.c_str();
	//or
	//char *p = (char*)str.c_str();
	cout << p;//输出:123456
	return 0;
}

第三种:copy()

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main()
{
	string str = "123456";
	int len = str.length();
	char *p = new char[len+1];
	str.copy(p, len, 0);//第二个参数代表要复制几个字符,第三个参数代表复制的位置
	*(p + len) = '\0';//一定要加上哦
	cout<<p;//输出:123456
	return 0;
}
2.char[]转向string

有很多种方法:
假设c字符串定义为char ch[]="hello world!";
1.向构造函数传入c字符串创建string对象:
string str(ch);
2.使用拷贝构造函数创建string对象:
string str = ch;
3.对已有的string对象调用string类内部定义的赋值运算符:
string str;
str = ch; 
 
前两种类似,但和第三种有较大区别,前两种是运用构造函数直接创建一个内容与c字符串一致的string对象;
第三种是c++标准库编写的string类的内部重载了赋值运算符,使之能够以c字符串作为右操作数对string对象进行赋值,
使string对象的内容与c字符串一致



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值