新聞中心
C++編程語(yǔ)言中的字符操作時(shí)一個(gè)比較基礎(chǔ)而且重要的應(yīng)用技術(shù)。我們?cè)谶@篇文章中將會(huì)為大家詳細(xì)講解一下有關(guān)C++字符串類(lèi)型的基本概念,相信通過(guò)本文的解讀,大家應(yīng)該可以充分掌握這方面的知識(shí)。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到武威網(wǎng)站設(shè)計(jì)與武威網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類(lèi)型包括:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請(qǐng)域名、網(wǎng)頁(yè)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋武威地區(qū)。
要使用C++字符串類(lèi)型中的string 類(lèi)型必須先包含相關(guān)的頭文件
- #include
例如下面是上一小節(jié)定義的字符數(shù)組
- #include
- string st( "The expense of spirit\n" );
st 的長(zhǎng)度由size()操作返回不包含終止空字符
- cout << "The size of "<< st<< " is " << st.size()<<
" characters, including the newline\n";
string 構(gòu)造函數(shù)的第二種形式定義了一個(gè)空字符串,例如
- string st2; // 空字符串
我們?cè)鯓幽鼙WC它是空的當(dāng)然一種辦法是測(cè)試size()是否為0
- if ( ! st.size() )
- // ok: 空
更直接的辦法是使用empty()操作
- if ( st.empty() )
- // ok: 空
如果C++字符串類(lèi)型中不含有字符則empty()返回布爾常量true ,否則返回false。第三種形式的構(gòu)造函數(shù)用一個(gè)string 對(duì)象來(lái)初始化另一個(gè)string 對(duì)象,例如
- string st3( st );
將st3 初始化成st 的一個(gè)拷貝,怎樣驗(yàn)證呢?等于操作符比較兩個(gè)string 對(duì)象,如果相等則返回true
- if ( st == st3 )
- // 初始化成功
怎樣拷貝一個(gè)字符串呢?最簡(jiǎn)單的辦法是使用賦值操作符,例如
- st2 = st3; // 把st3 拷貝到st2 中
首先將與st2 相關(guān)聯(lián)的字符存儲(chǔ)區(qū)釋放掉,然后再分配足夠存儲(chǔ)與st3 相關(guān)聯(lián)的字符的存儲(chǔ)區(qū)。***將與st3 相關(guān)聯(lián)的字符拷貝到該存儲(chǔ)區(qū)中。我們可以使用加操作符+ 或看起來(lái)有點(diǎn)怪異的復(fù)合賦值操作符+= 。將兩個(gè)或多個(gè)字符串連接起來(lái)。例如:給出兩個(gè)字符串
- string s1( "hello, " );
- string s2( "world\n" );
我們可以按如下方式將兩個(gè)字符串連接起來(lái),形成第三個(gè)字符串
- string s3 = s1 + s2;
如果希望直接將s2 附加在s1 后面那么可使用+= 操作符
- s1 += s2;
s1 和s2 的初始化包含了一個(gè)空格一個(gè)逗號(hào)以及一個(gè)換行,這多少有些不方便,它們的存在限制了對(duì)這些string 對(duì)象的重用,盡管它滿足了眼前的需要。一種替代做法就是混合
使用C 風(fēng)格的字符串與string 對(duì)象。如下所示:
- const char *pc = ", ";
- string s1( "hello" );
- string s2( "world" );
- string s3 = s1 + pc + s2 + "\n";
這種連接策略比較受歡迎,因?yàn)樗箂1 和s2 處于一種更容易被重用的形式。這種方法能夠生效是由于string 類(lèi)型能夠自動(dòng)將C 風(fēng)格的字符串轉(zhuǎn)換成string 對(duì)象。例如:這使我們
可以將一個(gè)C 風(fēng)格的字符串賦給一個(gè)string 對(duì)象。
- string s1;
- const char *pc = "a character array";
- s1 = pc; // ok
但是反向的轉(zhuǎn)換不能自動(dòng)執(zhí)行,對(duì)隱式地將string 對(duì)象轉(zhuǎn)換成C 風(fēng)格的字符串。string類(lèi)型沒(méi)有提供支持,例如,
下面試圖用s1 初始化str。 就會(huì)在編譯時(shí)刻失敗
- char *str = s1; // 編譯時(shí)刻類(lèi)型錯(cuò)誤
為實(shí)現(xiàn)這種轉(zhuǎn)換必須顯式地調(diào)用名為c_str()的操作
- char *str = s1.c_str(); // 幾乎是正確的但是還差一點(diǎn)
名字c_str()代表了C++字符串類(lèi)型中的string 類(lèi)型與C 風(fēng)格字符串兩種表示法之間的關(guān)系。字面意思是給我一個(gè)C 風(fēng)格的字符串,表示——即指向字符數(shù)組起始處的字符指針。但是這個(gè)初始化還是失敗了,這次是由于另外一個(gè)不同的原因,為了防止字符數(shù)組被程序直接處理,c_str()返回了一個(gè)指向常量數(shù)組的指針(下一節(jié)將解釋常量修飾符const)
const char*
str 被定義為非常量指針?biāo)赃@個(gè)賦值被標(biāo)記為類(lèi)型違例,正確的初始化如下
- const char *str = s1.c_str(); // ok
string 類(lèi)型支持通過(guò)下標(biāo)操作符訪問(wèn)單個(gè)字符,例如在下面的代碼段中,字符串中的所有句號(hào)被下劃線代替
- string str( "fa.disney.com" );
- int size = str.size();
- for ( int ix = 0; ix < size; ++ix )
- if ( str[ ix ] == '.' )
- str[ ix ] = '_';
以上就是對(duì)C++字符串類(lèi)型的相關(guān)介紹。
【編輯推薦】
- C++中C風(fēng)格字符串基本概念介紹
- C++調(diào)用python腳本函數(shù)基本應(yīng)用指南
- C++動(dòng)態(tài)創(chuàng)建對(duì)象應(yīng)用技術(shù)講解
- 各種常用C++類(lèi)庫(kù)概覽
- C++顯式轉(zhuǎn)換中幾種不同的轉(zhuǎn)換方式
網(wǎng)頁(yè)名稱:C++字符串類(lèi)型基本概念概述
本文地址:http://www.fisionsoft.com.cn/article/coigdds.html


咨詢
建站咨詢
