1. 程式人生 > >C++中的c_str()函式用法

C++中的c_str()函式用法

語法: 
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物件被析構,其內容被處理,同時,編譯器也將報錯——將一個const char *賦與一個char *。

應該這樣用: 
char c[20]; 
string s="1234"; 
strcpy(c,s.c_str()); 
這樣才不會出錯,c_str()返回的是一個臨時指標,不能對其進行操作
   c_str()返回的是一個分配給const char*的地址,其內容已設定為不可變更,如果再把此地址賦給一個可以變更內容的char*變數,就會產生衝突,在2010中是不被允許的。但是如果放入函式呼叫,或者直接輸出,因為這些函式和輸出都是把字串指標作為 const char*引用的,所以不會有問題。

再舉個例子
c_str() 以 char* 形式傳回 string 內含字串
如果一個函式要求char*引數,可以使用c_str()方法: 
string s = "Hello World!";
printf("%s", s.c_str()); //輸出 "Hello World!"

當需要開啟一個由使用者自己輸入檔名的檔案時,可以這樣寫:ifstream in(st.c_str());。其中st是string型別,存放的即為使用者輸入的檔名。