c++中c_str()的用法示例
//標(biāo)準(zhǔn)庫的string類提供了三個成員函數(shù)來從一個string得到c類型的字符數(shù)組
//主要介紹c_str
//c_str():生成一個const char*指針,指向以空字符終止的數(shù)組。
//這個數(shù)組應(yīng)該是string類內(nèi)部的數(shù)組
#include <iostream>
//需要包含cstring的字符串
#include <cstring>
using namespace std;
int main()
{
//string-->char*
//c_str()函數(shù)返回一個指向正規(guī)C字符串的指針, 內(nèi)容與本string串相同
//這個數(shù)組的數(shù)據(jù)是臨時的,當(dāng)有一個改變這些數(shù)據(jù)的成員函數(shù)被調(diào)用后,其中的數(shù)據(jù)就會失效。
//因此要么現(xiàn)用先轉(zhuǎn)換,要么把它的數(shù)據(jù)復(fù)制到用戶自己可以管理的內(nèi)存中
const char *c;
string s = "1234";
c = s.c_str();
cout<<c<<endl;
s = "abcde";
cout<<c<<endl;
}
結(jié)果是:

上面如果繼續(xù)用c指針的話,導(dǎo)致的錯誤將是不可想象的。就如:1234變?yōu)閍bcde
其實(shí)上面的c = s.c_str(); 不是一個好習(xí)慣。既然c指針指向的內(nèi)容容易失效,我們就應(yīng)該按照上面的方法,那怎么把數(shù)據(jù)復(fù)制出來呢?這就要用到strcpy等函數(shù)(推薦)。
//標(biāo)準(zhǔn)庫的string類提供了三個成員函數(shù)來從一個string得到c類型的字符數(shù)組
//主要介紹c_str
//c_str():生成一個const char*指針,指向以空字符終止的數(shù)組。
//這個數(shù)組應(yīng)該是string類內(nèi)部的數(shù)組
#include <iostream>
//需要包含cstring的字符串
#include <cstring>
using namespace std;
int main()
{
//更好的方法是將string數(shù)組中的內(nèi)容復(fù)制出來 所以會用到strcpy()這個函數(shù)
char *c = new char[20];
string s = "1234";
// c_str()返回一個客戶程序可讀不可改的指向字符數(shù)組的指針,不需要手動釋放或刪除這個指針。
strcpy(c,s.c_str());
cout<<c<<endl;
s = "abcd";
cout<<c<<endl;
}
以上就是c++中c_str()的用法示例的詳細(xì)內(nèi)容,更多關(guān)于c++ c_str()的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
VisualStudio2019構(gòu)建C/C++靜態(tài)庫和動態(tài)庫dll的問題 附源碼
這篇文章主要介紹了VisualStudio2019構(gòu)建C/C++靜態(tài)庫和動態(tài)庫(dll)(文末附源碼),本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03
C語言數(shù)組應(yīng)用實(shí)現(xiàn)掃雷游戲
這篇文章主要為大家詳細(xì)介紹了C語言數(shù)組應(yīng)用實(shí)現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-06-06
編寫C語言程序進(jìn)行進(jìn)制轉(zhuǎn)換的問題實(shí)例
這篇文章主要介紹了編寫C語言程序進(jìn)行進(jìn)制轉(zhuǎn)換的問題實(shí)例,文中附錄了一個各種進(jìn)制間的轉(zhuǎn)換程序代碼,需要的朋友可以參考下2015-08-08

