C++字符串類型的基本概念

這篇文章主要講解了“C++字符串類型的基本概念”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C++字符串類型的基本概念”吧!

網(wǎng)站設(shè)計、成都做網(wǎng)站的關(guān)注點不是能為您做些什么網(wǎng)站,而是怎么做網(wǎng)站,有沒有做好網(wǎng)站,給創(chuàng)新互聯(lián)一個展示的機會來證明自己,這并不會花費您太多時間,或許會給您帶來新的靈感和驚喜。面向用戶友好,注重用戶體驗,一切以用戶為中心。

要使用C++字符串類型中的string 類型必須先包含相關(guān)的頭文件

#include <string>

例如下面是上一小節(jié)定義的字符數(shù)組

#include <string> string st( "The expense of spirit\n" );

st 的長度由size()操作返回不包含終止空字符

  1. cout << "The size of "<< st<< " is " << st.size()<< 
    " characters, including the newline\n"; 

string 構(gòu)造函數(shù)的第二種形式定義了一個空字符串,例如

string st2; // 空字符串

我們怎樣能保證它是空的當然一種辦法是測試size()是否為0

if ( ! st.size() )  // ok: 空

更直接的辦法是使用empty()操作

if ( st.empty() )  // ok: 空

如果C++字符串類型中不含有字符則empty()返回布爾常量true ,否則返回false。第三種形式的構(gòu)造函數(shù)用一個string 對象來初始化另一個string 對象,例如

string st3( st );

將st3 初始化成st 的一個拷貝,怎樣驗證呢?等于操作符比較兩個string 對象,如果相等則返回true

if ( st == st3 )  // 初始化成功

怎樣拷貝一個字符串呢?最簡單的辦法是使用賦值操作符,例如

st2 = st3; // 把st3 拷貝到st2 中

首先將與st2 相關(guān)聯(lián)的字符存儲區(qū)釋放掉,然后再分配足夠存儲與st3 相關(guān)聯(lián)的字符的存儲區(qū)。***將與st3 相關(guān)聯(lián)的字符拷貝到該存儲區(qū)中。我們可以使用加操作符+ 或看起來有點怪異的復合賦值操作符+= 。將兩個或多個字符串連接起來。例如:給出兩個字符串

string s1( "hello, " );  string s2( "world\n" );

我們可以按如下方式將兩個字符串連接起來,形成第三個字符串

string s3 = s1 + s2;

如果希望直接將s2 附加在s1 后面那么可使用+= 操作符

s1 += s2;

s1 和s2 的初始化包含了一個空格一個逗號以及一個換行,這多少有些不方便,它們的存在限制了對這些string 對象的重用,盡管它滿足了眼前的需要。一種替代做法就是混合
使用C 風格的字符串與string 對象。如下所示:

const char *pc = ", ";  string s1( "hello" );  string s2( "world" );  string s3 = s1 + pc + s2 + "\n";

這種連接策略比較受歡迎,因為它使s1 和s2 處于一種更容易被重用的形式。這種方法能夠生效是由于string 類型能夠自動將C 風格的字符串轉(zhuǎn)換成string 對象。例如:這使我們
可以將一個C 風格的字符串賦給一個string 對象。

string s1;  const char *pc = "a character array";  s1 = pc; // ok

但是反向的轉(zhuǎn)換不能自動執(zhí)行,對隱式地將string 對象轉(zhuǎn)換成C 風格的字符串。string類型沒有提供支持,例如,

下面試圖用s1 初始化str。 就會在編譯時刻失敗

char *str = s1; // 編譯時刻類型錯誤

為實現(xiàn)這種轉(zhuǎn)換必須顯式地調(diào)用名為c_str()的操作

char *str = s1.c_str(); // 幾乎是正確的但是還差一點

名字c_str()代表了C++字符串類型中的string 類型與C 風格字符串兩種表示法之間的關(guān)系。字面意思是給我一個C 風格的字符串,表示&mdash;&mdash;即指向字符數(shù)組起始處的字符指針。但是這個初始化還是失敗了,這次是由于另外一個不同的原因,為了防止字符數(shù)組被程序直接處理,c_str()返回了一個指向常量數(shù)組的指針(下一節(jié)將解釋常量修飾符const)

const char*

str 被定義為非常量指針所以這個賦值被標記為類型違例,正確的初始化如下

const char *str = s1.c_str(); // ok

string 類型支持通過下標操作符訪問單個字符,例如在下面的代碼段中,字符串中的所有句號被下劃線代替

string str( "fa.disney.com" );  int size = str.size();  for ( int ix = 0; ix < size; ++ix )  if ( str[ ix ] == '.' )  str[ ix ] = '_';

感謝各位的閱讀,以上就是“C++字符串類型的基本概念”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對C++字符串類型的基本概念這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

本文標題:C++字符串類型的基本概念
鏈接分享:http://muchs.cn/article36/gphjsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、手機網(wǎng)站建設(shè)、小程序開發(fā)、網(wǎng)站設(shè)計、網(wǎng)站導航網(wǎng)頁設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名