string類可以將字串視為輸入到乙個簡單變數中,像使用乙個變數那樣使用他。
前提是:使用標頭檔案#include
,另外,string類位於命名空間std中,因此需要使用using namespace std;或者std::string 或者using std::string。
在其他方面,又類似字串那樣使用。例如,在宣告並初始化的時候,需要給字串加上雙引號或者單引號,像 string abc="aaa"; 這樣。
上**:
#include#include//使用string類必須呼叫標頭檔案string
int main()
輸出結果:
請輸入乙個人的名字
a b請輸入第二個人的名字
cde請輸入第三個人的名字,姓和名之間**空格
f g h
第四個人名:
i jk
你知道麼?a b 很帥
再告訴你乙個秘密:cde 真的很帥
第三件事是:f g h 很厲害!
第四個人的名字是 i
第乙個人名字的第乙個字元是:a
第二個人的名字的第二個字元是d
string類的字元,可以通過陣列那樣的方式,來讀取其中第n個字元,並且輸入的數字為n=1
。
注意:
①我們可以發現,第四個人名i jk只顯示出字元i,而空格和jk則沒有被讀取。想要讀取空格,就需要像第三個人名那樣,使用函式getline(cin,string變數名)。
②雖然string型別可以像簡單變數那樣使用,但也可以被像字串(陣列)那樣讀取字串(陣列)中的第n個字元。讀取方式幾乎完全等同於讀取字串(陣列)中字元的方法。
③string型別在建立變數時,相對於字串(陣列)那樣需要標明長度的方式,顯得更安全可靠。而且可以自動根據實際輸入的字串長度調整自己的長度。例如在string abc;的時候,abc的字串長度為0,在string aaa="ab";的時候,字串的長度則為3(包括最後的空白字元)。
string類的賦值:
我們知道,當有兩個陣列aaa,bbb時,其中aaa已經被初始化,但是bbb不能通過賦值的方式,將aaa中的字串賦給陣列bbb,如bbb=aaa;這種方式是錯誤的。
但是當有兩個string型別的變數ccc和ddd時,假如ccc=;已被初始化,是可以通過賦值的方式,將ccc的字串賦給ddd,如ddd=ccc;cout<string類的相加:
也可以將兩個string型別的變數進行相加,並賦值給第三個string變數,後者將被加到前者的字串的後面。方法是:string變數c=string變數a+string變數b。
例如string ccc = ;string ddd = "efg";string eee = ccc + ddd;cout << eee;則輸出結果為abcefg(注意,中間沒有空格或者別的什麼)。
也可以直接將第二個string型別變數加到第乙個string後面,第乙個變數則為原來兩個變數拼合起來。方法是 目標string變數 += 被加的string變數。
例如: string ccc = ;string ddd = "efg";ccc += ddd;cout << ccc;輸出結果為abcefg
關於相加,第一種方式是相加的兩個變數沒有變化,第三個變數為相加兩個變數合起來之後的字串。第二種方式是被變的string變數沒有變數,目標string變數變化為兩個變數合併起來之後的字串。
上**:
#include#includeint main()
輸出結果為:
請輸入乙個妹子的名字:阿木
阿木很漂亮
阿木真的很漂亮
楊冪(人稱大冪冪)是乙個明星。
楊冪(人稱大冪冪)也很漂亮
在連續相加的時候:
aa += dd; //將變數dd加到變數aa的字串後面
aa += bb; //再將變數bb加到變數aa的字串後面
也可以直接通過這樣的一行**來起到相同的效果:
aa += dd += bb;
經過實際測試,兩者效果是等效的。
注意:
①string類有自動調節字串長度的功能。例如變數aa初始長度為0,在使用者輸入進行賦值後,字串為4個位元組(兩個漢字),其後進行兩次string變數相加,長度變為20個位元組,然後又在之後進行賦值,長度變成18個位元組(7個漢字2個括號每個佔2個位元組)。注意,sizeof 變數名是無法測出string類變數所佔空間的,他是動態分配的。
要想測試變數所佔空間,需要通過 變數名.size
() 這樣的方法來進行。如 string aa;cout << aa.size()<< endl; 就是輸出string變數aa的長度,結果為0。注意,這種方法不計算最後的空白符
②如果不是string類,而是c-風格的字串。
可以使用strcat(目標字串a,字串b)來將字串b的內容複製到字串a的後面;
另外是strcpy(目標字串a,字串b)可以將字串b全部複製到(即理解為賦值)到目標字串a之中。
但兩個存在的問題是可能因為長度超出,而導致資料損壞等問題。
在c函式庫裡,則是strncpy()和strncat()——多了乙個n,並且這兩個函式支援指出目標陣列的最大允許長度的第三個引數,因此更為安全(避免因資料溢位而導致資料損壞),但增加了程式輸入的複雜度。
總之,還是用string類好。
顯示字串的字元數:
在顯示字串的的字元數時,string類的字串和c-風格的字串的方法是不同的。注意, 顯示字元數 和 顯示字串長度 是不一樣的,後者比前者多乙個空字元。
①string類顯示字串的字元數的方法如下:變數名.size()。例如 cout << aa.size() << endl; //顯示string類字串的字元數,不包含末尾空字元,但包含空格字元
②顯示c-風格的字串的字元數的方法如下:strlen(變數名)。例如:
char aaa[5] = "abcd";
cout << strlen(aaa) << endl; //顯示c-風格字串的字元數
cout << sizeof(aaa) << endl; //顯示c-風格字串的字元長度,包含結尾空字元
輸出的結果分別為:4和5
演算法(四十八)
1 給你乙個鍊錶,每 k 個節點一組進行翻轉,請你返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼請將最後剩餘的節點保持原有順序。示例 給你這個鍊錶 1 2 3 4 5 當 k 2 時,應當返回 2 1 4 3 5 當 k 3 時,應當返回 3 2...
金陵四十八景
1 石城霽雪 清涼山石頭城上的雪景 2 鐘阜晴雲 紫金山上的雲景 3 鷺洲二水 江東門外白鷺村一帶的古白鷺洲,李白詩 二水中分白鷺洲 4 鳳凰三山 城西南露崗鳳凰台遺址上遠眺江邊的三山,李白詩 三山半落青天外 5 龍江夜雨 下關龍江邊夜聽雨聲 6 虎洞明曦 東南郊高橋門外黃龍山附近的虎中 黎明時的陽...
python四十八 多型
多型 物件如何通過他們共同的屬性和動作來操作及訪問,而不需要考慮他們具體的類。比如 字串和列表都有 len 方法 ss ssssss lt 1,2,3,4,5,6 print ss.len 等價於呼叫len 函式,len ss print lt.len 等價於呼叫len 函式,len lt clas...