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

今天突然用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!"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章