char * 可以轉(zhuǎn)string,直接賦值即可。不能單獨(dú)賦int和c字符類型值。
string s1("demo1");
string s1 = "demo";
char *p = "demo";
s1 = p;
string轉(zhuǎn)char*有三種方式:c_str(),data(),copy()
c_str()返回一個(gè)c風(fēng)格的字符數(shù)組,帶有'\0'結(jié)束
data()返回一個(gè)數(shù)組,不自動(dòng)增加‘\0’
copy()拷貝一塊字符到新的內(nèi)存,需要新分配一塊內(nèi)存用于存放。
前兩個(gè)函數(shù),原有內(nèi)容發(fā)生變化,地址指的內(nèi)容也會變化,使用copy不會發(fā)生這種問題。(見例子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 內(nèi)容發(fā)生變化后,p1和p2指針內(nèi)容的地址也發(fā)生變化。