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