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字符串一致



展开阅读全文

没有更多推荐了,返回首页