久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

string 與char* char[]之間的轉(zhuǎn)換

 yetao_study 2014-09-18
1,、首先必須了解,string可以被看成是以字符為元素的一種容器,。字符構(gòu)成序列(字符串),。有時候在字符序列中進行遍歷,標(biāo)準的string類提供了STL容器接口,。具有一些成員函數(shù)比如begin(),、end(),迭代器可以根據(jù)他們進行定位,。

注意,,與char*不同的是,,string不一定以NULL('\0')結(jié)束。string長度可以根據(jù)length()得到,,string可以根據(jù)下標(biāo)訪問,。所以,不能將string直接賦值給char*,。

2,、string 轉(zhuǎn)換成 char *

如果要將string直接轉(zhuǎn)換成const char *類型。string有2個函數(shù)可以運用,。

一個是.c_str(),,一個是data成員函數(shù)。

例子如下:

string s1 = "abcdeg";
const char *k = s1.c_str();
const char *t = s1.data();
printf("%s%s",k,t);
cout<<k<<t<<endl;

如上,,都可以輸出,。內(nèi)容是一樣的。但是只能轉(zhuǎn)換成const char*,,如果去掉const編譯不能通過,。

那么,如果要轉(zhuǎn)換成char*,,可以用string的一個成員函數(shù)copy實現(xiàn),。

string s1 = "abcdefg";
char *data;
int len = s1.length();
data = (char *)malloc((len+1)*sizeof(char));
s1.copy(data,len,0);
printf("%s",data);
cout<<data;

3、char *轉(zhuǎn)換成string

可以直接賦值,。

string s;

char *p = "adghrtyh";

s = p;

不過這個是會出現(xiàn)問題的,。

有一種情況我要說明一下。當(dāng)我們定義了一個string類型之后,,用printf("%s",s1);輸出是會出問題的,。這是因為“%s”要求后面的對象的首地址。但是string不是這樣的一個類型,。所以肯定出錯,。

用cout輸出是沒有問題的,若一定要printf輸出,。那么可以這樣:
printf("%s",s1.c_str())


4,、char[] 轉(zhuǎn)換成string

這個也可以直接賦值。但是也會出現(xiàn)上面的問題,。需要同樣的處理,。


5、string轉(zhuǎn)換成char[]

這個由于我們知道string的長度,,可以根據(jù)length()函數(shù)得到,,又可以根據(jù)下標(biāo)直接訪問,所以用一個循環(huán)就可以賦值了,。

這樣的轉(zhuǎn)換不可直接賦值,。

    string pp = "dagah";
    char p[8];
    int i;
    for( i=0;i<pp.length();i++)
        p[i] = pp[i];
    p[i] = '\0';
    printf("%s\n",p);
    cout<<p;

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多