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

2020-08-11 23:22:54

語法:

1 const char *c_str();

c_str()函數返回一個指向正規C字串的指針常數, 內容與本string串相同。

這是爲了與c語言相容,在c語言中沒有string型別,故必須通過string類物件的成員函數c_str()把string 物件轉換成c中的字串樣式。

注意:一定要使用strcpy()函數 等來操作方法c_str()返回的指針。

比如:最好不要這樣:

1 char* c;
2 string s="1234";
3 c = s.c_str();

c最後指向的內容是垃圾,因爲s物件被解構,其內容被處理,同時,編譯器也將報錯——將一個const char *賦與一個char *。

應該這樣用:

1 char c[20];
2 string s="1234";
3 strcpy(c,s.c_str());

這樣纔不會出錯,c_str()返回的是一個臨時指針,不能對其進行操作。

再舉個例子:

c_str() 以 char* 形式傳回 string 內含字串,如果一個函數要求char*參數,可以使用c_str()方法:

1 string s = "Hello World!";
2 printf("%s", s.c_str());    // 輸出 "Hello World!"```

轉自:http://blog.csdn.net/nancy_m/article/details/7583550