c++(19)標準庫類型string( 一 )

標準庫類型string表示可變長字符序列。

使用string類型必須先包含string頭文件。

#include <string>

using namespace std::string;


定義和初始化string對象
string s1; 默認初始化,s1的值爲空串

string s2(s1); s2是s1的副本

string s3 = s2; s3是s2的副本

string s4 = "value"; s4是字面值"value"的副本,除了字面值最後的空字符之外

string s5("value); s5是字面值"value"的副本,除了字面值最後的空字符之外

string s6(n,'c') s6是由連續n個的字符c組成的串

其中使用等號=的是拷貝初始化,其它爲直接初始化。

string對象上的操作

一個類除了要定義初始化其對象的方式外,還要定義對象上所能進行的操作。

其中類既能定義通過函數名來調用的操作,也能定義<<,+等各種運算符在該類對象上的新含義。


string對象常用的幾種操作

ostream << s               將s寫到輸出流ostream當中,結果返回

ostream istream >> s 將s寫到輸入流istream當中,結果返回istream 其中,忽略串之前的空格,遇到空格結束

getline(istream,s) 從istream中讀取一行賦值給s,返回istream 讀取一行字符串的過程中,不會忽略空格

s.empty() s爲空返回true,否則返回false

s.size() 返回s中字符的個數

s[n] 返回s中第n個字符的引用,其中位置n從0計起

s1+s2 返回s1和s2連接後的結果

s1 = s2 將s2的副本替代s1中原來的字符

s1 == s2 判斷s1和s2的字符是否完全相等,相等返回true,否則返回false

s1 != s2 相等性判斷大小寫敏感

<,>,<=,>= 按照字符在ascii碼錶的順序進行比較


string::size_type類型 s.size()返回值類型不是int或者unsigned,而是string::size_type類型。


在使用string對象相加的時候,注意!!

可以使用字符串字面值代替string相加如:

string s1;

string s2 = s1 + "hello";

但是必須確保+號兩端的對象必須有一個是string。

string s3 = "a" + "b" + s2;這種就是錯誤的

string s4 = s2 + "a" + "b";是正確的。

其原理和學習標準輸入輸出中使用<<和>>連續輸入或者輸出是一樣的。

string s4 = (s2 + "a") + "b";

string s3 = ("a" + "b") + s2;

s3的運算過程中無法把字面值直接相加。

注意!!因爲某些歷史原因,也爲了與c語言相容,c++語言中的字符串字面值並不是標準庫類型的string類型。



處理string對象中的字符

頭文件cctype頭文件中定義了一組標準庫函數處理這部分工作(處理string對象中的字符)。

isalnum(c) 當a爲 字母或者數字 時爲真

isalpha(c) 字母

iscntrl(c) 控制字符

isdigit(c) 數字字符

isgraph(c) 非空格可打印字符

islower(c) 小寫字母

isprint(c) 可打印字符

ispunct(c) 標點符號

issapce(c) 空格

isupper(c) 大寫字母

isxdigit(c) 十六進制數字

tolpwer(c) 如果c是大寫字母,輸出對應的小寫字母。否則原樣輸出c

toupper(c) 如果c是小寫字母,輸出對應的大寫字母。否則原樣輸出c

注意!!

c++標準庫除了定義c++語言特有功能之外,也兼容了c語言的標準庫。

c語言的頭文件形式形如name.h,c++則將這些頭文件明明爲cname.即去掉了.h後綴,且在文件名name前加上了字母c。

不同之處除了頭文件名之外,還有一點就是,cname命名的頭文件中定義的名字都在命名空間std內,而name.h命名的頭文件則不然。

除了這兩點之外,c和c++頭文件的內容是完全相同的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章