官术网_书友最值得收藏!

1.10 玩轉(zhuǎn)字符串——不一樣的風(fēng)格

字符串指存儲在內(nèi)存的連續(xù)字節(jié)中的一系列字符。C++中的字符串分為兩種形式:C-風(fēng)格字符串、C++ string類字符串。

1. C-風(fēng)格字符串

C-風(fēng)格字符串的頭文件為#include<cstring>,默認以'\0'結(jié)束,在存儲空間中不要忘了'\0'。字符串定義形式如下。

? 字符數(shù)組:char a[8]={'v','e','r','y','g','o','o','d'}。

? 字符串:char a[8]={'a','b','c','d','e','f','g','\0'}。

還有另外一種字符串定義。

? 字符串:char a[8]="abcdefg"。

? 字符串:char a[]="afsdjkl;sd"。

字符數(shù)組或字符串的長度測量函數(shù)為sizeof、strlen。

(1)sizeof:返回所占總空間的字節(jié)數(shù),針對整型或字符型數(shù)組及整型或字符型指針。由于在編譯時計算,因此sizeof不能用來返回動態(tài)分配的內(nèi)存空間大小。

(2)strlen:返回字符數(shù)組或字符串所占的字節(jié)數(shù),針對字符數(shù)組及字符指針。

訓(xùn)練1-43:定義一些字符串,求長度并運算、輸出。

C-風(fēng)格字符串的輸入方式有cin、getline和get。

? cin:使用空格、制表符、換行符來確定字符串的結(jié)束位置,因此字符串只能接收一個單詞。換行符被保留在輸入序列中。

? getline:讀取一行,直到遇到換行符,丟棄換行符。

? get:讀取一行,直到遇到換行符,換行符被保留在輸入序列中。

注意!使用cin和get后會將換行符保留在輸入序列中,解決方法為再調(diào)用一次cin.get。

2. C++ string類字符串

C++ string類字符串的長度沒有限制,其頭文件為#include<string>。C++中的string類隱藏了字符串的數(shù)組性質(zhì),使用戶可以像處理普通變量一樣處理字符串。

注意:

? 可以使用C-風(fēng)格字符串初始化string類字符串;

? 可以使用cin輸入并將輸入的內(nèi)容存儲到string類字符串中;

? 可以使用cout輸出string類字符串;

? string類字符串沒有'\0'的概念;

? char數(shù)組使用了一組用于存儲一個字符串的存儲單元,而string變量使用了一個表示字符串的實體。

字符串的長度測量函數(shù)有.length、.size。例如,str.length()和str.size()都可用于求str字符串的長度。

C++string類字符串的輸入方式有cin和getline。

訓(xùn)練1-45:輸入一些字符串,對其進行復(fù)制、拼接、比較等操作。

訓(xùn)練1-46:輸入一行字符,統(tǒng)計單詞的個數(shù),單詞之間以空格隔開。

訓(xùn)練1-47:輸入3個字符串,找出其中最小的字符串。

主站蜘蛛池模板: 宾阳县| 府谷县| 常州市| 穆棱市| 都安| 花垣县| 胶南市| 青冈县| 东辽县| 清镇市| 抚顺市| 奉节县| 大城县| 雅江县| 东海县| 夹江县| 朝阳县| 罗田县| 邛崃市| 清丰县| 赤水市| 福贡县| 班玛县| 东宁县| 连城县| 小金县| 宁南县| 资中县| 南召县| 双柏县| 白银市| 红河县| 会宁县| 云南省| 肇庆市| 浦东新区| 来安县| 铁岭县| 刚察县| 潼南县| 汾西县|