国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++教程:C++字符串—特殊對象

2020-05-23 14:26:19
字體:
來源:轉載
供稿:網友
字符串(String)“abc”是我們可以想象出來的具體物體,它的長度為3個字符,我們可以在它的第2個字符查找到字母“b”。字符串“abcdefg”是我們可以想象出來的具體物體,它的長度為7個字符,我們可以在它的第3個字符查找到字母“cd”。由于各個字符串都具有一些屬性,都能對其進行一些操作,所以,字符串是一個類。

下面我們先來看一段程序,了解如何使用字符串:(程序13.2.1)
#include <string>
#include <iostream>
using namespace std;
int main()
{
   string a("abc");//創建一個字符串a,內容為“abc”
   cout <<"Pos 'b'=" <<a.find("b") <<endl;//在字符串a中查找子串“b”的位置(從0開始)
   cout <<"Length of a=" <<a.length() <<endl;//字符串a的長度
   cout <<a <<endl;//輸出字符串a
   string b("abcdefg");//創建一個字符串b,內容為“ancdefg” 
   cout <<"Pos /"cd/"=" <<b.find("cd") <<endl; //在字符串b中查找子串“cd”的位置
   cout <<"Length of b=" <<b.length() <<endl; //字符串b的長度
   cout <<b <<endl; //輸出字符串b
   return 0;
}

運行結果:
Pos 'b'=1
Length of a=3
abc
Pos "cd"=2
Length of b=7
abcdefg

程序中string是類名。a和b是對象名,它們類似于變量名,也是一種標志符。而string a("abc");的寫法是對象的初始化,在后面的章節我們會作詳細介紹。

奇妙的點

程序13.2.1中出現了諸如a.length()和b.find("cd")之類的形式。在第九章,我們說過結構中有這種寫法,即用成員操作符“.”來代表“的”,從而能夠描述一個結構變量中的成員數據(某種屬性)。

而在程序13.2.1中卻是在成員操作符后面出現了函數的形式,我們把這種函數稱為成員函數(Function Member),有時也稱為操作或方法。成員函數就是對某個對象的操作。比如a.length()就是求字符串a的長度,b.find("cd")就是在字符串b中查找子串“cd”的位置。

對字符串的操作

對某個對象的操作并不是隨心所欲的,而是事先設計好的。就像汽車不能飛,杯子不能吃一樣,每個對象所能進行的操作總是和它所屬的“類”相關的。那么字符串除了能夠求長度和查找子串位置外還能進行一些別的操作么?當我們在輸入程序13.2.1的時候就已經發現了一個“秘密”,如下圖所示。
C++教程:C++字符串—特殊對象
我們輸入了對象名和成員操作符之后,VC會給出一個下拉式列表,里面羅列了所有和該對象相關內容。字符串能進行什么操作,就看這個列表啦!下表就是其他一些常用的字符串操作:
C++教程:C++字符串—特殊對象
下面我們通過程序來實踐一下這些操作:(程序13.2.2)
#include <string>
#include <iostream>
using namespace std;
int main()
{
   string a("abc");//創建字符串a
   string b("StringB");
  cout <<"Length of a=" <<a.length() <<endl;//此時a的長度為3
   cout <<a <<endl;//字符串a的內容為“abc”
   a.append("EFG");//在字符串末尾添加“EFG”
   cout <<"Length of a=" <<a.length() <<endl;//此時字符串長度為6
   cout <<a <<endl;//字符串a的內容為“abcEFG”
   a.insert(3,b);//在字符串a的第三個字符后插入字符串b
   cout <<a <<endl;//字符串a的內容為“abcStringBEFG”
   cout <<a.compare("ABCDEFG") <<endl;//字符串a與“ABCDEFG”比較,不同應輸出1
   cout <<a.compare(a) <<endl;//字符串a與自己比較,相同應輸出0
   cout <<a.empty() <<endl;//字符串a不是空的,應輸出0
   a.swap(b);//字符串a和b內容交換
   cout <<"String a is "<<a <<endl <<"String b is "<<b <<endl;
   return 0;
}

運行結果:
Length of a=3
abc
Length of a=6
abcEFG
abcStringBEFG
1
0
0
String a is StringB
String b is abcStringBEFG

類似于標準庫函數,我們不需要記住每種“類”的全部操作,只需要在使用過程中記住一些常用的操作就可以了。如果有需要的話,可以求助于相關書籍或網絡。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江津市| 寻甸| 遂平县| 平南县| 固阳县| 许昌县| 安顺市| 霍邱县| 怀柔区| 宜城市| 大悟县| 临安市| 吉首市| 吴旗县| 山西省| 广丰县| 鱼台县| 秦安县| 临漳县| 志丹县| 寿光市| 北碚区| 茶陵县| 沅陵县| 静安区| 虹口区| 类乌齐县| 黑河市| 射洪县| 万全县| 昌乐县| 海阳市| 恩平市| 宜丰县| 黄梅县| 高平市| 凤凰县| 石阡县| 柏乡县| 定南县| 拜城县|