c++ string类型转换为char *类型

string 是c++标准库里面其中一个,封装了对字符串的操作
把string转换为char* 有3中方法:
1。data
如:
string str="abc";
char *p=str.data();
2.c_str
如:string str="gdfd";
    char *p=str.c_str();
3 copy
比如
string str="hello";
char p[40];
str.copy(p,5,0); //这里5,代表复制几个字符,0代表复制的位置
*(p+5)='/0'; //要手动加上结束符
cout < <p;

 

 



写c++代码会经常使用标准C的东西,两者搀和起来使用中难免出现类型不匹配,需要转换,之前经常使用sprintf 将char* 类型转换为string类型

后来遇到string类型向char *类型转换,查了一下资料,使用c_str函数,格式为:

string s="1234";
const char *c = s.c_str();
需要注意的是,c_str() 返回值为const char *类型的!

例子:

[cpp] view plain copy print?
string add_to = "hello!";  
const string add_on = "baby";  
const char *cfirst = add_to.c_str();  
const char *csecond = add_on.c_str();  
char *copy = new char[strlen(cfirst) + strlen(csecond) + 1];  
strcpy(copy, cfirst);  
strcat(copy, csecond);  
add_to = copy;  
cout << "copy: " << copy << endl;  
delete [] copy;  
cout << "add_to: " << add_to << endl;  

posted @ 2016-10-08 09:51  特洛伊-Micro  阅读(1793)  评论(0编辑  收藏  举报