最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2013年10月08日 10:14:07   作者:  
與char*不同的是,string不一定以NULL('\0')結(jié)束。string長度可以根據(jù)length()得到,string可以根據(jù)下標(biāo)訪問。所以,不能將string直接賦值給char*

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

注意,與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;

相關(guān)文章

  • C++示例講解初始化列表方法

    C++示例講解初始化列表方法

    這篇文章主要介紹了C++成員初始化列表,除了可以使用構(gòu)造函數(shù)對類成員進(jìn)行初始化之外,C++還提供了另外一種初始化的方法,叫做成員初始化列表。下面來看看文章的詳細(xì)吧,需要的朋友可以參考一下
    2022-07-07
  • C++實現(xiàn)LeetCode(58.求末尾單詞的長度)

    C++實現(xiàn)LeetCode(58.求末尾單詞的長度)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(58.求末尾單詞的長度),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 使用C++和Crypto++庫實現(xiàn)AES加密與解密

    使用C++和Crypto++庫實現(xiàn)AES加密與解密

    在這篇博客中,我們將深入探討如何利用C++和Crypto++庫實現(xiàn)高效且安全的AES加密與解密機(jī)制,Crypto++是一款高度認(rèn)可的免費C++類庫,文中通過代碼示例介紹的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下
    2024-01-01
  • C語言詳細(xì)分析講解struct與union使用方法

    C語言詳細(xì)分析講解struct與union使用方法

    最近開始自學(xué)C語言,從最基礎(chǔ)部分的開始學(xué)起。今天看書的時候注意到了struct和union似乎很像,除了名字不同,看起來幾乎沒有區(qū)別。<BR>既然C中定義了struct和union兩個關(guān)鍵字,那么它們肯定是有區(qū)別的,在查了一些資料之后我來總結(jié)一下他們的使用
    2022-04-04
  • 詳解C++中單繼承與多繼承的使用

    詳解C++中單繼承與多繼承的使用

    C++的繼承機(jī)制相對其他語言是比較復(fù)雜的一種,不同于java只支持單繼承,C++不僅支持單繼承,也支持多繼承。本文將詳細(xì)講解C++中單繼承與多繼承的使用,需要的可以參考一下
    2022-04-04
  • Qt實現(xiàn)屏幕底部冒泡效果

    Qt實現(xiàn)屏幕底部冒泡效果

    這篇文章主要為大家詳細(xì)介紹了Qt實現(xiàn)屏幕底部冒泡效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • Qt調(diào)用MATLAB引擎混合編程的過程詳解

    Qt調(diào)用MATLAB引擎混合編程的過程詳解

    這篇文章給大家介紹了Qt調(diào)用MATLAB引擎混合編程的全過程,文中通過圖文結(jié)合的方式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • C++ 如何使用RapidJson 寫入文件

    C++ 如何使用RapidJson 寫入文件

    RapidJSON 是只有頭文件的 C++ 庫, 不需要編譯, 可以直接在項目中使用, 只需把 include/rapidjson 目錄復(fù)制至系統(tǒng)或項目的 include 目錄即可,下面給大家分享C++ 如何使用RapidJson 寫入文件,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • C++中CopyFile和MoveFile函數(shù)使用區(qū)別的示例分析

    C++中CopyFile和MoveFile函數(shù)使用區(qū)別的示例分析

    這篇文章主要介紹了C++中CopyFile和MoveFile函數(shù)使用區(qū)別的示例分析,CopyFile表示將文件A拷貝到B,如果B已經(jīng)存在則覆蓋,MoveFile表示將文件A移動到。對此感興趣的可以來了解一下
    2020-07-07
  • c語言?數(shù)據(jù)存儲與原碼?反碼?補(bǔ)碼詳細(xì)解析

    c語言?數(shù)據(jù)存儲與原碼?反碼?補(bǔ)碼詳細(xì)解析

    不知道你是否和我一樣好奇,學(xué)習(xí)編程語言的同時想,各個數(shù)據(jù)類型是怎樣在我們的內(nèi)存中儲存的呢,如果你仔細(xì)深入了解的話,你會了解其中的樂趣,了解科學(xué)家們的偉大,了解c語言
    2022-02-02

最新評論

弋阳县| 沧州市| 襄汾县| 施秉县| 岳普湖县| 巍山| 潮安县| 临城县| 洱源县| 衡水市| 略阳县| 且末县| 庆元县| 确山县| 永新县| 册亨县| 迁安市| 温宿县| 奉贤区| 和静县| 垦利县| 鄄城县| 山西省| 田东县| 新绛县| 金秀| 中方县| 岚皋县| 涿鹿县| 灵山县| 图片| 洞头县| 广东省| 原阳县| 宁陵县| 茌平县| 什邡市| 福贡县| 大安市| 沈阳市| 时尚|