1、string 转换成 char *
如果要将string
直接转换成const char *
类型。string有2个函数可以运用。一个是c_str()
,一个是data
成员函数。
例子如下:
string s1 = "abcdeg";
const char *k = s1.c_str();
const char *t = s1.data();
printf("%s%s",k,t);
cout<<k<<t<<endl;
const value_type *c_str( ) const
它的返回值为char *
,对于一般的c函数适用
如上,都可以输出。内容是一样的。但是只能转换成const char*
,如果去掉const
编译不能通过。
那么,如果要转换成char*
,可以用string
的一个成员函数copy实现。
string s1 = "abcdefg";
char *data;
int len = s1.length();
data = (char *)malloc((len+1)*sizeof(char));
s1.copy(data,len,0);
printf("%s",data);
cout<<data;
2、char *转换成string
可以直接赋值。
string s;
char *p = "adghrtyh";
s = p;
不过这个是会出现问题的。
有一种情况我要说明一下。当我们定义了一个string
类型之后,用printf("%s",s1);
输出是会出问题的。这是因为"%s"
要求后面的对象的首地址。但是string
不是这样的一个类型。所以肯定出错。
用cout
输出是没有问题的,若一定要printf
输出。那么可以这样:
printf("%s",s1.c_str())