1. 程式人生 > >C語言中輸出string方法c_str()用法

C語言中輸出string方法c_str()用法

原文地址 https://blog.csdn.net/crazyspopcorn_qian/article/details/41926953

今天突然用printf("%s",str);//str  是一個string

的時候突然出現亂碼,就查了一下為什麼。任何時候只有自己敲程式碼的時候才能發現,,

可以用cout<<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物件被析構,其內容被處理

應該這樣用: 
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!"