-
如果要将
string
转换为char*
,可以使用string
提供的函数c_str()
,或是函数data()
,data除了返回字符串内容外,不附加结束符'\0'
,而c_str()
返回一个以‘\0’
结尾的字符数组。 -
const char *c_str()
c_str()
函数返回一个指向正规C字符串的指针,内容与本string
串相同.
这是为了与c语言兼容,在c语言中没有string
类型,故必须通过string
类对象的成员函数c_str()
把string
对象转换成c中的字符串样式.
注意:一定要使用strcpy()
函数等来操作方法c_str()
返回的指针
比如:最好不要这样:
char* c;
string s="1234";
c = s.c_str(); //c最后指向的内容是垃圾,因为s对象被析构,其内容被处理
应该这样用:
char c[20];
string s="1234";
strcpy(c,s.c_str());
这样才不会出错,c_str()
返回的是一个临时指针,不能对其进行操作.
c_str()
以 char*
形式传回 string
内含字符串,如果一个函数要求char*
参数,可以使用c_str()
方法.
举例:
1.
string s = "Hello World!";
printf("%s",s.c_str()); //输出 "Hello World!"
const char *p = a.data();
const char *p = a.c_str();
char *p = const_cast<char*>(a.c_str());
char *strc = new char[strlen(str.c_str())+1];
strcpy(strc, str.c_str());