我们经常会使用C和C++的混合编程,在某些情况下,需要将C++的string,转换成char* 的字符串。下面说两种可行的方法,作为总结。
1. data();
如:
string str="abc";
char*p=(char*)str.data();
2.c_str();
如:
string str="adcd";
char *p=(char*)str.c_str();
暂时就记这两种吧,简单而且差不多够用了。
class Solution { public: void replaceSpace(char *str,int length) { // if(str == NULL) return ; string sd; string res(str);//s()将char* 变成string for(int i=0;i<res.length();i++) { if (res[i] == ‘ ‘) sd += "%20"; else sd += res[i]; } char *ret= (char *)sd.c_str();//将string转换成char * strcpy(str,ret); } };
函数关键字:strcpy
使用格式:char* strcmp(char* buffer,char*str)
功 能: 把从str地址开始且含有NULL结束符的字符串复制到以buffer开始的地址空间,buffer地址空间中必须有足够的空间来容纳str的字符串
class Solution { public: void replaceSpace(char *str,int length) { // if(str == NULL) return ; string buffer; string res(str);//s()将char* 变成string for(int i=0;i<res.length();i++) { if (res[i] == ‘ ‘) buffer += "%20"; else buffer += res[i]; } char *ret= (char *)buffer.c_str();//将string转换成char * strcpy(str,ret); } };