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[]