C++中C風(fēng)格字符串基本概念介紹
C++編程語言作為一款C語言的升級(jí)版本,支持C語言中的各種功能,有經(jīng)驗(yàn)的編程人員可以很輕松的上手這款語言。今天我們就為大家介紹C++中C風(fēng)格字符串的具體應(yīng)用,讓大家體驗(yàn)一下其中的C語言特點(diǎn)。#t#
C++提供了兩種字符串的表示C風(fēng)格的字符串和標(biāo)準(zhǔn)。 C++引入的string 類類型一般我們建議使用string 類。但實(shí)際上在許多程序的情形中我們有必要理解和使用老式的C++中C風(fēng)格字符串。在第7 章我們會(huì)看到一個(gè)例子。它處理命令行選項(xiàng)而這些選項(xiàng)被作為C 風(fēng)格的字符串?dāng)?shù)組傳遞給main()函數(shù)
C 風(fēng)格的字符串起源于C 語言并在C++中繼續(xù)得到支持。實(shí)際上在標(biāo)準(zhǔn)C++之前除了第三方字符串庫類之外它是惟一一種被支持的字符串。字符串被存儲(chǔ)在一個(gè)字符數(shù)組中一般通過一個(gè)char*類型的指針來操縱它標(biāo)準(zhǔn)C 庫為操縱C++中C風(fēng)格字符串提供了一組函數(shù)例如:
- // 返回字符串的長度
- int strlen( const char* );
- // 比較兩個(gè)字符串是否相等
- int strcmp( const char*, const char* );
- // 把第二個(gè)字符串拷貝到***個(gè)字符串中
- char* strcpy(char*, const char* );
標(biāo)準(zhǔn)C 庫作為標(biāo)準(zhǔn)的C++的一部分被包含在其中為使用這些函數(shù)我們必須包含相關(guān)的C 頭文件
- #include <cstring>
指向C++中C風(fēng)格字符串的字符指針總是指向一個(gè)相關(guān)聯(lián)的字符數(shù)組,即使當(dāng)我們寫一個(gè)字符串常量時(shí),如:
- const char *st = "The expense of spirit\n";
系統(tǒng)在內(nèi)部也把字符串常量存儲(chǔ)在一個(gè)字符串?dāng)?shù)組中,然后st 指向該數(shù)組的***個(gè)元素。那么我們?cè)鯓右宰址男问絹聿倏vst 呢?一般地我們用指針的算術(shù)運(yùn)算來遍歷C 風(fēng)格的字符串,每次指針增加1 直到到達(dá)終止空字符為止例如:
- while ( *st++ ) { ... }
char*類型的指針被解除引用并且測試指向的字符是true 還是false 。true 值是除了空字符外的任意字符(空字符在判斷語句中被莫認(rèn)為是假),++是增加運(yùn)算符它使指針對(duì)指向數(shù)組中的下一個(gè)字符。一般來說當(dāng)我們使用一個(gè)指針時(shí)在解除指針的引用之前測試它是否指向某個(gè)對(duì)象是必要的,否則程序很可能會(huì)失敗例如:
- int
- string_length( const char *st )
- {
- int cnt = 0;
- if ( st )
- while ( *st++ )
- ++cnt; return cnt;
- }
以上就是對(duì)C++中C風(fēng)格字符串的相關(guān)介紹。






