string、char *、char[] 相互转换转换

点击打开原文链接

一、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;

猜你喜欢

转载自blog.csdn.net/mpp_king/article/details/88758019