string的皮毛與範圍for----C++學習之路

/*以下是自己學習的心得與筆記,書籍《C++prime》平日會學習的書籍有《數據庫系統導論》《計算機組成原理》《計算機系統導論》*/


最近又倒回去看了看之前學的沒記筆記的知識。

學了string的皮毛以及範圍for。


大部分我們用到的庫函數都屬於命名空間std,所以要了解關於命名空間的using聲明。 我的理解是,舉個例子,假如我們要使用cout與cin,

就算添加了庫文件,不添加using聲明,我們使用cout<<什麼什麼<<endl;這樣編譯器會報錯,因爲我們使用的名字不夠完整,完整的名字爲:

std::cout<<什麼什麼<<std::endl;這樣的話,爲了不這麼繁瑣,我們可以使用using聲明,using std::cout;using std::endl;或者直接把整個std包含

進來,using namespace std; 這裏注意:頭文件不應該包含using聲明。因爲,頭文件是要包含在別的文件去的,別的文件也許會聲明using什麼,

這樣就會弄混。

string十個標準庫類型,其中的學問很大,百度之後,就於拷貝賦值與直接賦值都有學問,因爲我的愚笨,我就先記下一些皮毛的筆記。


<1>string的操作:

os<<s 
is<<s        輸入輸出 
getline(is,s)    從is中讀取一行給s 
s.empty()          判斷s是否爲空字符串
s.size()           返回s的字符串長度,類型爲size_type
s[n]     下標方法,返回一個字符
s1 + s2字符串相加
s1 = s2    字符串賦值
s1 == s2        字符串比較,返回bool
s1 != s2       同上
<, <= , >, >= 利用字符在字典的順序進行比較,對大小寫敏感

<2>size_type

它是一個無符號類型,所有存放string的size函數返回值的變量,都是string::size_type類型,舉個例子:加入n是一個具有負值的int,表達式s.size()<n的判斷,結果幾乎肯定是true,這是因爲負值n會自動地轉換成一個較大的無符號數。所以根據我自己的理解,在應用string或者其他會返回size_type,應該說可能會返回,儘量應用auto與decltype來定義這個類型,例如decltype(s.size()) c=0; 後面的筆記還會有例子。

<3>string相加

注意一個就是:C++中大部分的運算方式都是從左邊到右邊,string相加必須確保每個加法運算的兩側的運算至少要一個是string類型。例如:

string s4 =s1+","; 正確
string s5 = "hello" + "world"; 錯誤
string s6 = s1 + "," + "world"; 這裏就是上面提到的,從左向右,可以堪稱(s1+",")+"world";括號裏相加還是string類型
string s7 = “hello" + "," +s1; 錯誤,道理如上
<4>string字符處理:

isalnum(c) 當c是字母或者數字的時候爲真
isalpha(c) 當c是字母時候爲真
iscntrl(c) 當c爲控制字符時爲真
isdigit(c) 當c爲數字的時候爲真
isgraph(c) 當c不是空格但是可以打印的時候爲真
islower(c) 當c爲小寫的時候爲真
isprint(c) 當c可以打印時候爲真
ispunct(c) 當c爲符號時候爲真
isspace(c) 當c爲空格時候爲真
isupper(c) 當c爲大寫的時候爲真
isxdigit(c) 當c爲十六位進制數字時候爲真
tolower(c) 當c爲大寫時候輸出小寫,當c爲小寫,輸出本身。
toupper(c) 當c爲小寫時候輸出大寫,當c爲大寫輸出本身。
例子:當輸入abCD我要輸出都爲小寫。這裏可以while以及for配合下標或者迭代器,或者範圍for,第五點就是範圍for的概念。

<5>範圍for

語法:for (declaration:expression){........}

declaration爲一個變量,遍歷expression中的每個元素。舉個例子:

string s1 = "word";
for ( const auto c : s1)
{
    cout<<c<<endl;
}得到結果就是
w
o
r
d
這就是範圍for,《Effective C++》書裏說盡量使用const,那麼當我們要通過範圍for來修改s1中的東西時候,應該使用引用。

string s2 = "world";
for ( auto &c : s2)
{
    c=X;
}
結果會等於:
XXXXX






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