点击打开原文链接
一、string 转 char*
主要有三种方法可以将 str 转换为 char* 类型,分别是:data(); c_str(); copy;
1、data() 方法:
string str = "hello world";
const char *p = str.data(); //加const 或用 char *p = (char*)str.data(); 的形式
注:若不加 const,编译时会报错:无法从 "const char*" 转换为 "char*";
2、c_str() 方法:
string str = "hello";
const char *p = str.c_str(); //同上
3、copy() 方法:
string str = "hello";
char buf[50];
str.copy(buf,5,0); //这里 6代表6个字符,0代表复制位置
*(buf+5) = '\0'; //需手动加结束符
二、char* 转 string
可以直接赋值。
string str;
char *p = "hello";
str = p;
//注意:当p中含有较多'\0'时,转换的string是截断后的,正确转换如下:
string str(p,size); //size是p的大小
说明:当声明了 string类型变量 str 后,printf("%s",str); 是会出错的。因为"%s"要求后面的对象的首地址。但string不是这样的类型,所以会出错。
三、string 转 char[]
string str = "hello";
char p[8];
int i;
for(i=0; i<str.length(); ++i)
{
p[i] = str[i];
}
p[i] = '\0'; //这一步比较重要
printf("%s\n",p);
cout<<p;
四、char[] 转 string
可以直接赋值。
char p[60] = "hello";
string str;
str = p;
cout<<str;