#include
using std:
:string
string s1;
//預設初始化,s1是乙個空串
string s2
(s1)
;//s2是s1的副本
string s2=s1;
//等價於s2(s1),s2是s1的副本
string s3
("value");
//s3是字面值"value"的副本,除了字面值最後那個空字元
string s3=
"value"
;//等價於s3("value"),s3是字面值"value"的副本
string s4
(n,'c');
//把s4初始化為由連續n個字元c組成的串
標準庫iostream中cin,cout可讀寫int,double等內建型別的值,同樣,也可以使用io操作符讀寫string物件;
int
main()
在char型別中,有輸入函式scanf來讀取,但遇到空就會終止,同樣的,用cin來讀取string物件時,遇到空也會終止。比如程式輸入「hello world!」,程式將輸出"hello"。
當然,和內建型別的輸入操作一樣,string物件的此類操作也是返回運算子左側的運算物件作為其結果。因此,多個輸入或輸出也可以連在一起寫:
string s1,s2;
cin>>s1>>s2;
//把第乙個讀入s1中,第二個讀入s2中 輸入:hello world
cout/輸出兩個string物件 輸出:helloworld
int
main()
cin可以讀取string物件,但有一缺點就是遇到空格就結束,而getline剛好可以彌補這個缺點,讀取一行字串,包含空格,直到遇到第乙個換行符,但不存放換行符。
int
main()
empty函式判斷string物件是否為空,並返回乙個bool值,如果為空,則返回true,否則返回false。
while
(getline
(cin,line)
)
size函式返回string物件的長度(即string物件中字元的個數),可以使用size函式只輸出長度超過80的字串:
string line;
while
(getline
(cin,line))if
(line.
size()
>80)
cout<相等性運算子:==和!= 檢驗兩個字串是否相等;
關係運算子:<,<=,>,>= 分別檢驗乙個string物件是否小於,小於等於,大於,大於等於另外乙個string物件。
上述運算子都依照(大小寫敏感)字典順序:
1.如果兩個string物件的長度不同,而且較短string物件的每個字元都與較長string物件對應位置上的字元相同,就說較短string物件小於較長string物件。
2.如果兩個string物件在某些對應的位置上不一致,則string物件比較的結果其實是string物件中第一對相異字元比較的結果。
string st1(10
,'c'
),st2;
//st1的內容是 cccccccccc,st2是乙個空字串
st1=st2;
//賦值,用st2的副本替換st1的內容
//此時st1和st2都是空串
string類允許使用加法運算子(+)將兩個string物件連線起來,也可使用復合賦值運算子(+=)把右側string物件的內容加到左側string物件的後面:
string s1=
"hello, "
,s2=
"world\n"
;string s3=s1+s2;
//s3的內容是hello, world\n;
s1+=s2;
//等價於s1=s1+s2
當把string物件和字元字面值及字串字面值混在一條語句中使用時,必須確保每個加法運算子的兩側物件至少有乙個是string
string s1=
"hello"
,s2=
"world"
;string s3=s1+
', '
+s2+
'\n'
;string s4=s1+
', '
;//正確,把乙個string物件和乙個字面值相加
string s5=
"hello"
+', '
;//錯誤,兩個運算子都不是string
string s6=s1+
', '
+"world"
;//正確,每個加法運算子都有乙個運算物件string
string s7=
"hello"
+', '
+s2;
//錯誤,不能直接將兩個字面值相加
在標頭檔案cctype中定義了一組標準庫函式處理字串中的字元
isalnum
(c) 當c是字母或數字時為真
isalpha
(c) 當c是字母時為真
iscntrl
(c) 當c是控制字元時為真
isdigit
(c) 當c是數字時為真
isgraph
(c) 當c不是空格但可列印時為真
islower
(c) 當c是小寫字母時為真
isprint
(c) 當c是可列印字元時為真(即c是空格或c具有可視形式)
ispunct
(c) 當c是標點符號時為真(即c不是控制字元、數字、字母、可列印空白中的一種)
isspace
(c) 當c是空白時為真(即c是空格、橫向製表符、縱向製表符、回車符、換行符、進紙符中的一種)
isupper
(c) 當c是大寫字母時為真
isxdigit
(c) 當c是16進製制數字時為真
tolower
(c) 如果c是大寫字母,輸出相應的小寫字母,否則原樣輸出
toupper
(c) 如果c是小寫字母,輸出相應的大寫字母,否則原樣輸出
標準庫String型別
1 string物件的讀寫 用iostream標準庫可以用於讀寫內建型別如int double等的值,同樣也可以用iostream和string標準庫,使用輸入輸出操作符來讀寫string物件 注 從標準輸入讀取string,並將讀入的串儲存在s中。string型別的輸入操作符 另外還有乙個有用的s...
標準庫 string 型別
從標準輸入讀取 string 並將讀入的串儲存在 s 中。string 型別的輸入操作符 讀取並忽略開頭所有的空白字元 如空格,換行符,製表符 讀取字元直至再次遇到空白字元,讀取終止。輸入 hello world 則螢幕上將輸出 hello 而不含任何空格。這個函式接受兩個引數 乙個輸入流物件和乙個...
標準庫型別string
include using namespace std string定義在命名空間std中文件 string標準庫 string是乙個內部定義的類,初始化類物件的方式是通過類內部定義的構造方法決定的。下面列出幾個string常用的初始化方式 string s1 預設的初始化方式,s1是乙個空串 st...