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;