1、如果要將string轉換為char*,可以使用string提供的函式c_str() ,或是函式data(),data除了返回字串內容外,不附加結束符"\0",而c_str()返回一個以‘\0’結尾的字元陣列。2、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()方法:string s = "Hello World!";printf("%s",s.c_str()); //輸出 "Hello World!"
1、如果要將string轉換為char*,可以使用string提供的函式c_str() ,或是函式data(),data除了返回字串內容外,不附加結束符"\0",而c_str()返回一個以‘\0’結尾的字元陣列。2、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()方法:string s = "Hello World!";printf("%s",s.c_str()); //輸出 "Hello World!"