string char*转换,c语言string转char数组
1、注意,与char*不同的是,string不一定以NULL(‘\0’)结束。string长度可以根据length()得到,string可以根据下标访问。所以,不能将string直接赋值给char*。
2、string 转const char *
如果要将string直接转换成const char *类型。string有2个函数可以运用。
一个是.c_str(),一个是data成员函数。
例如:
#include ‘stdafx.h ‘
#include iostream
#包含位
#包含字符串
用户命名空间STD;
(intmain(intargc,char* argv[] ) ) ) ) ) ) ) ) ) ) )
{
/*未指定的int ul1=3,ul2=7;
cout(ul1ul2) endl;
cout(ul1|ul2 ) endl;
cout(ul1ul2) endl;
cout(ul1|||ul2 ) endl;
*/
string str=’adcdfg ‘;
const char *k=str.c_str (;
const char *l=str.data (;
printf(k=%s,l=%s(n ),k,l );
coutklendl;
返回0;
}
在中,要转换为char*,请使用string的成员函数copy。例如:
#include ‘stdafx.h ‘
#include iostream
#包含位
#包含字符串
用户命名空间STD;
(intmain(intargc,char* argv[] ) ) ) ) ) ) ) ) ) ) )
{
/*未指定的int ul1=3,ul2=7;
cout(ul1ul2) endl;
cout(ul1|ul2 ) endl;
cout(ul1ul2) endl;
cout(ul1|||ul2 ) endl;
*/
/*
string str=’adcdfg ‘;
const char *k=str.c_str (;
const char *l=str.data (;
printf(k=%s,l=%s(n ),k,l );
coutklendl;
*/
string str=’adsfefg ‘;
char *data;
int leng=str.length (;
data=(char* ) malloc ) leng1* sizeof (char );
str.copy (数据,长度,0 );
printf (数据=% s )、数据);
coutdataendl;
返回0;
}
3、char *转string
可以直接赋值。
string s;
char *p = “adghrtyh”;
s = p;
不过这个是会出现问题的。
有一种情况我要说明一下。当我们定义了一个string类型之后,用printf(“%s”,s1);输出是会出问题的。这是因为“%s”要求后面的对象的首地址。但是string不是这样的一个类型。所以肯定出错。
用cout输出没有问题。 请务必用printf输出。 那么,您可以:
printf(‘%s ‘,s1.c_str ) )
4、char[] 转string
跟上面的一样直接赋值
5、string转char[]