char[]、char* 与 string 相互转换

说明

char[]、char* 是C语言的字符串
string 是 C++ 的字符串

char[]、char* 转 string

C++ 兼容 C语言,所以可直接转换

例子

char str[128]="abc";
std::string str2=str;

string 转 char *、char []

有2种方式:

  • c_str()
  • data()

c_str() 【推荐】

返回一个指向正规C字符串的指针, 内容与本string串相同,以 \0 结束,与c语言兼容

注意:一定要使用 strcpy() 函数 等来操作方法 c_str() 返回的指针

反例

不要这样:

 const char* c;
 string s="1234";
 c = s.c_str();
 cout<<c<<endl;          //输出:1234
 s="abcd";
 cout<<c<<endl;          //输出:abcd

正例

应该这样用:

char c[20];
string s="1234";
strcpy(c,s.c_str());

这样才不会出错,c_str()返回的是一个临时指针,不能对其进行操作

data()

返回字符串内容,但不以 \0 结束


原文出处:/show_1IX2teRWlK7k.html