char * 可以轉string,直接賦值即可。不能單獨賦int和c字符類型值。
string s1("demo1");
string s1 = "demo";
char *p = "demo";
s1 = p;
string轉char*有三種方式:c_str(),data(),copy()
c_str()返回一個c風格的字符數組,帶有'\0'結束
data()返回一個數組,不自動增加‘\0’
copy()拷貝一塊字符到新的內存,需要新分配一塊內存用于存放。
前兩個函數,原有內容發生變化,地址指的內容也會變化,使用copy不會發生這種問題。(見例子3)
const char *p = s.data();
const char * p = s.c_str();
char *p = new char[s.length() + 1];
s.copy(p, string::npos);
p[s.length()] = 0;
用好,釋放 p
例子3:
std::string s1 = "demo 123456\n \0";
const char *p1 = s1.c_str();
const char *p2 = s1.data();
s1 = "345";
s1 內容發生變化后,p1和p2指針內容的地址也發生變化。