欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入解析C++中的字符數(shù)組和處理字符串的方法

 更新時(shí)間:2015年09月12日 17:04:29   投稿:goldensun  
這篇文章主要介紹了深入解析C++中的字符數(shù)組和處理字符串的方法,需要的朋友可以參考下

C++字符數(shù)組
用來(lái)存放字符數(shù)據(jù)的數(shù)組是字符數(shù)組,字符數(shù)組中的一個(gè)元素存放一個(gè)字符。字符數(shù)組具有數(shù)組的共同屬性。由于字符串應(yīng)用廣泛,C和C++專門為它提供了許多方便的用法和函數(shù)。
字符數(shù)組的定義和初始化

定義字符數(shù)組的方法與前面介紹的類似。例如:

  char c[10];
  c[0]=′I′;c[1]=′ ′;c[2]=′a′;c[3]=′m′;c[4]=′ ′;c[5]=′h′;c[6]=′a′;c[7]=′p′;c[8]=′p′;c[9]=′y′;

上面定義了c為字符數(shù)組,包含10個(gè)元素。在賦值以后數(shù)組的狀態(tài)如圖所示。


對(duì)字符數(shù)組進(jìn)行初始化,最容易理解的方式是逐個(gè)字符賦給數(shù)組中各元素。如

  char c[10]={'I',' ','a','m',' ','h','a','p','p','y'};


把10個(gè)字符分別賦給c[0]~c[9]這10個(gè)元素。

如果花括號(hào)中提供的初值個(gè)數(shù)大于數(shù)組長(zhǎng)度,則按語(yǔ)法錯(cuò)誤處理。如果初值個(gè)數(shù)小于數(shù)組長(zhǎng)度,則只將這些字符賦給數(shù)組中前面那些元素,其余的元素自動(dòng)定為空字符。如果提供的初值個(gè)數(shù)與預(yù)定的數(shù)組長(zhǎng)度相同,在定義時(shí)可以省略數(shù)組長(zhǎng)度,系統(tǒng)會(huì)自動(dòng)根據(jù)初值個(gè)數(shù)確定數(shù)組長(zhǎng)度。如:

  char c[]={'I',' ','a','m',' ','h','a','p','p','y'};


也可以定義和初始化一個(gè)二維字符數(shù)組,如
   

復(fù)制代碼 代碼如下:
char diamond[5][5]={{' ',' ','*'},{' ', '*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'}};

字符數(shù)組的賦值與引用

只能對(duì)字符數(shù)組的元素賦值,而不能用賦值語(yǔ)句對(duì)整個(gè)數(shù)組賦值。如:

  char c[5];
  c={'C','h','i','n','a'}; //錯(cuò)誤,不能對(duì)整個(gè)數(shù)組一次賦值
  c[0]='C'; c[1]='h';c[2]='i';c[3]='n';c[4]='a'; //對(duì)數(shù)組元素賦值,正確

如果已定義了a和b是具有相同類型和長(zhǎng)度的數(shù)組,且b數(shù)組已被初始化,請(qǐng)分析:

  a=b; //錯(cuò)誤,不能對(duì)整個(gè)數(shù)組整體賦值
  a[0]=b[0]; //正確,引用數(shù)組元素

【例】設(shè)計(jì)和輸出一個(gè)鉆石圖形。

#include <iostream>
using namespace std;
void main( )
{
  char diamond[][5]={{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'}};
  int i,j;
  for (i=0;i<5;i++)
  {
   for (j=0;j<5;j++)
   cout<<diamond[i][j]; //逐個(gè)引用數(shù)組元素,每次輸出一個(gè)字符
   cout<<endl;
  }
}

C++處理字符串的方法—字符串類與字符串變量
用字符數(shù)組來(lái)存放字符串并不是最理想和最安全的方法。

C++提供了一種新的數(shù)據(jù)類型——字符串類型(string類型),在使用方法上,它和char、int類型一樣,可以用來(lái)定義變量,這就是字符串變量——用一個(gè)名字代表一個(gè)字符序列。

實(shí)際上,string并不是C++語(yǔ)言本身具有的基本類型,它是在C++標(biāo)準(zhǔn)庫(kù)中聲明的一個(gè)字符串類,用這種類可以定義對(duì)象。每一個(gè)字符串變量都是string類的一個(gè)對(duì)象。
字符串變量的定義和引用

1) 定義字符串變量
和其他類型變量一樣,字符串變量必須先定義后使用,定義字符串變量要用類名string。如:

  string string1; //定義string1為字符串變量
  string string2=″China″; //定義string2同時(shí)對(duì)其初始化

應(yīng)當(dāng)注意:要使用string類的功能時(shí),必須在本文件的開(kāi)頭將C++標(biāo)準(zhǔn)庫(kù)中的string頭文件包含進(jìn)來(lái),即應(yīng)加上

  #include <string> //注意頭文件名不是string.h

2) 對(duì)字符串變量的賦值
在定義了字符串變量后,可以用賦值語(yǔ)句對(duì)它賦予一個(gè)字符串常量,如:

  string1=″Canada″;


既可以用字符串常量給字符串變量賦值,也可以用一個(gè)字符串變量給另一個(gè)字符串變量賦值。如:

  string2=string1; //假設(shè)string2和string1均已定義為字符串變量


不要求string2和string1長(zhǎng)度相同,假如string2原來(lái)是″China″,string1原來(lái)是″Canada″,賦值后string2也變成″Canada″。在定義字符串變量時(shí)不需指定長(zhǎng)度,長(zhǎng)度隨其中的字符串長(zhǎng)度而改變。

可以對(duì)字符串變量中某一字符進(jìn)行操作,如:

  string word=″Then″; //定義并初始化字符串變量word
  word[2]=′a′; //修改序號(hào)為2的字符,修改后word的值為″Than″

3) 字符串變量的輸入輸出
可以在輸入輸出語(yǔ)句中用字符串變量名,輸入輸出字符串,如:

  cin>> string1; //從鍵盤輸入一個(gè)字符串給字符串變量string1
  cout<< string2; //將字符串string2輸出


字符串變量的運(yùn)算

在上一節(jié)中可以看到: 在以字符數(shù)組存放字符串時(shí),字符串的運(yùn)算要用字符串函數(shù),如strcat(連接)、strcmp(比較)、strcpy(復(fù)制),而對(duì)string類對(duì)象,可以不用這些函數(shù),而直接用簡(jiǎn)單的運(yùn)算符。

1) 字符串復(fù)制用賦值號(hào)

  string1=string2;

其作用與“strcpy(string1,string2);”相同。

2) 字符串連接用加號(hào)

  string string1=″C++″; //定義string1并賦初值
  string string2=″Language″;//定義string2并賦初值
  string1=string1 + string2;//連接string1和string2


連接后string1為″C++ Language″。

3) 字符串比較直接用關(guān)系運(yùn)算符
可以直接用 ==(等于)、>(大于)、<(小于)、!=(不等于)、>=(大于或等于)、<=(小于或等于)等關(guān)系運(yùn)算符來(lái)進(jìn)行字符串的比較。
字符串?dāng)?shù)組

不僅可以用string定義字符串變量,也可以用string定義字符串?dāng)?shù)組。如:

  string name[5]; //定義一個(gè)字符串?dāng)?shù)組,它包含5個(gè)字符串元素
  string name[5]={″Zhang″, ″Li″, ″Fun″, ″Wang″, ″Tan″}; //定義一個(gè)字符串?dāng)?shù)組并初始化

此時(shí)name數(shù)組的狀況如圖所示。


關(guān)于字符串?dāng)?shù)組的幾點(diǎn)說(shuō)明:
在一個(gè)字符串?dāng)?shù)組中包含若干個(gè)(現(xiàn)為5個(gè))元素,每個(gè)元素相當(dāng)于一個(gè)字符串變量。
并不要求每個(gè)字符串元素具有相同的長(zhǎng)度,即使對(duì)同一個(gè)元素而言,它的長(zhǎng)度也是可以變化的,當(dāng)向某一個(gè)元素重新賦值,其長(zhǎng)度就可能發(fā)生變化。
在字符串?dāng)?shù)組的每一個(gè)元素中存放一個(gè)字符串,而不是一個(gè)字符,這是字符串?dāng)?shù)組與字符數(shù)組的區(qū)別。如果用字符數(shù)組存放字符串,一個(gè)元素只能存放一個(gè)字符,用一個(gè)一維字符數(shù)組存放一個(gè)字符串。
每一個(gè)字符串元素中只包含字符串本身的字符而不包括′\0′。

可見(jiàn)用字符串?dāng)?shù)組存放字符串以及對(duì)字符串進(jìn)行處理是很方便的。

在定義字符串?dāng)?shù)組時(shí)怎樣給數(shù)組分配存儲(chǔ)空間呢?實(shí)際上,編譯系統(tǒng)為每一個(gè)字符串變量分配4個(gè)字節(jié),在這個(gè)存儲(chǔ)單元中,并不是直接存放字符串本身,而是存放字符串的地址。在本例中,就是把字符串″Zhang″的地址存放在name[0],把字符串″Li″ 的地址存放在name[1],把字符串″Fun″的地址存放在name[2]……上只是一個(gè)示意圖。在字符串變量中存放的是字符串的指針(字符串的地址)。

 

相關(guān)文章

  • c++ cin 作為while條件(詳解)

    c++ cin 作為while條件(詳解)

    下面小編就為大家?guī)?lái)一篇c++ cin 作為while條件(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • VC6.0常見(jiàn)編譯錯(cuò)誤提示附解決方法

    VC6.0常見(jiàn)編譯錯(cuò)誤提示附解決方法

    這篇文章主要介紹了VC++6.0編譯過(guò)程中常遇到的一些錯(cuò)誤提示并給出了錯(cuò)誤原因與分析,需要的朋友尅參考下
    2013-07-07
  • C++將CBitmap類中的圖像保存到文件的方法

    C++將CBitmap類中的圖像保存到文件的方法

    這篇文章主要介紹了C++將CBitmap類中的圖像保存到文件的方法,涉及C++導(dǎo)出資源文件的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • C++ CTreeview的checkbox使用方法

    C++ CTreeview的checkbox使用方法

    這篇文章主要介紹了C++ CTreeview的checkbox使用方法的相關(guān)資料,需要的朋友可以參考下
    2015-06-06
  • C語(yǔ)言編程數(shù)據(jù)結(jié)構(gòu)棧與隊(duì)列的全面講解示例教程

    C語(yǔ)言編程數(shù)據(jù)結(jié)構(gòu)棧與隊(duì)列的全面講解示例教程

    本文介紹著重介紹數(shù)據(jù)結(jié)構(gòu)-棧和隊(duì)列的知識(shí),由于本文也設(shè)計(jì)多個(gè)動(dòng)態(tài)內(nèi)存開(kāi)辟函數(shù),小伙伴們?cè)趯W(xué)習(xí)本文之前,一定一定一定要把動(dòng)態(tài)內(nèi)存開(kāi)辟相關(guān)知識(shí)掌握牢固,這樣學(xué)習(xí)起本文才能事半功倍
    2021-10-10
  • C語(yǔ)言學(xué)習(xí)進(jìn)階篇之萬(wàn)字詳解指針與qsort函數(shù)

    C語(yǔ)言學(xué)習(xí)進(jìn)階篇之萬(wàn)字詳解指針與qsort函數(shù)

    之前的指針詳解中,提到過(guò)qsort函數(shù),這個(gè)函數(shù)是用來(lái)排序的,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言指針與qsort函數(shù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 如何用C++求兩個(gè)數(shù)的最大公約數(shù)和最小公倍數(shù)

    如何用C++求兩個(gè)數(shù)的最大公約數(shù)和最小公倍數(shù)

    最大公約數(shù)是指兩個(gè)或多個(gè)整數(shù)共有約數(shù)中,最大的一個(gè)約數(shù),常用的方法是歐幾里得算法,也叫輾轉(zhuǎn)相除法,下面這篇文章主要給大家介紹了關(guān)于如何用C++求兩個(gè)數(shù)的最大公約數(shù)和最小公倍數(shù)的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • C語(yǔ)言簡(jiǎn)明介紹指針的使用

    C語(yǔ)言簡(jiǎn)明介紹指針的使用

    C語(yǔ)言這門課程在計(jì)算機(jī)的基礎(chǔ)教學(xué)中一直占有比較重要的地位,然而要想突破C語(yǔ)言的學(xué)習(xí),對(duì)指針的掌握是非常重要的,本文將具體針對(duì)指針的基礎(chǔ)做詳盡的介紹
    2022-06-06
  • C++ 11新特性之大括號(hào)初始化詳解

    C++ 11新特性之大括號(hào)初始化詳解

    這篇文章主要介紹了C++ 11新特性之大括號(hào)初始化的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • C++中rapidjson將嵌套map轉(zhuǎn)為嵌套json的講解

    C++中rapidjson將嵌套map轉(zhuǎn)為嵌套json的講解

    今天小編就為大家分享一篇關(guān)于C++中rapidjson將嵌套map轉(zhuǎn)為嵌套json的講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-04-04

最新評(píng)論