1.一开始用这种方法
string s1 = "abcdefg";
char *data;
int len = s1.length();
data = (char *)malloc((len+1)*sizeof(char));
s1.copy(data,len,0);
printf("%s",data);
cout<<data;
运行后发现转换后的是没有加结束符的,结果出来的是乱码。
string s1 = "abcdefg";
char *data;
data = const_cast<char*>(s1 .c_str());
这种也是会乱码
2.后来转为用这种
string s1 = "abcdefg";
char *data;
const int len =s1.length();
data = new char[len+1];
strcpy(data,s1.c_str());
但是编译后,提示strcpy不安全,改为用strcpy_s
strcpy_s(data,BUFFER_LENGTH,s1.c_str());
但是还是发现在函数结束后系统会提示堆被破坏。
3.结果重新用回第一种,加上结束符
string s1 = "abcdefg";
char *data;
int len = s1.length();
data = (char *)malloc((len+1)*sizeof(char));
s1.copy(data,len,0);
*(data+len)='\0';
printf("%s",data);
cout<<data;
运行成功。