c++ 學習 隨筆二

來源:互聯網
上載者:User

1、在程式當中對string類型進行輸入時,總是忽略前面的Null 字元,比如空格,斷行符號,分行符號等等,知道接收第一個字元開始,一直到下一個Null 字元,輸入結束。然後getline()函數卻不同,主要用於一行的輸入,所以如果第一個字元就是分行符號,那麼getline()就會執行命令,跳到下一行,否則一直接收本行所以字串,知道遇到最後的分行符號。getline()在返回時丟棄分行符號,所以字串中沒有分行符號。

2、上一篇部落格中寫過,字串的字面值比如“abcd”與string類型不是一樣的,所以我們在使用+時對字串,至少要保證+的左右兩邊有一邊是string類型的。比如

string a("abcd");string b;b = a + "efgh";string c;c = "ab"+"cd";
上述表達中,b是合理的,c是不合理的。

3、同樣在上一篇中提到過,有些類型在電腦中的表達格式是不一樣的例如int型,同樣,string也一樣,那麼為瞭解決這個問題,在標準庫中定義了與相應類型配套的一些方法的值的類型。比如,在string類型中size()函數用於返回字串的長度,此時的傳回值就是size_type的,與int類型完全不同,因為size_type一定是正數,而且可以非常大,大到int

接收不了的數值,所以此時如果把size_type賦值給int類型,會產生巨大的錯誤。同樣string的下標操作類型也是size_type;同樣的還有vector也是用size_type作為配套類型;在數組當中,用size_t作為配套的類型。這一定多多理解就明白了,其實不難。size_type是unsigned的,size_t是signed。

4、說起vector就必須要提到迭代器,其實簡單的來看,可以將迭代器和指標連起來記憶,因為迭代器就是由此而來,這回明白了吧。。。在同一容器的迭代器可以相減

iter1 - iter2
此時式子返回的是difference_type,是signed的,因為相減的結果可能為負,並且iter1,iter2必須為同一容器,或者指向容器最後一個元素的下一個位置。兩個指標相減返回的類型是ptrdiff_t類型的。

5、const vector<int>::iterator p 和vector<int>::const_iterator q;這兩個迭代器有什麼不同,我剛開始學的時候,還鬱悶了一陣,其實理解的const和const_iterator之後,非常容易理解。這樣說,const指的是p中的內容可以修改,但是迭代器p本身不能修改,就是賦值,加1等操作都不行,因為const修飾迭代器,這一點從右像左仔細看看。而const_iterator是指元素不能修改,但是迭代器可以修改。

6、void*指標,看到過幾次,但是不常用,標識什麼類型的指標都可以,一般用於接收,傳遞等。沒有什麼具體的操作。

7、再來說一說數組吧,與vector不同,數組不允許直接賦值和複製。

8、最後所以說c風格的字串吧,我對它也是無語了,最好還是用c++的string風格吧。

char a[] = {'a','b','c'};char a[] = {'a','b','c',NULL};
怎麼樣看明白了嗎,對的,一定要在最後加上Null 字元結尾,第一個的長度不定,第二的長度一定為3;string類型的字串也是預設為以Null 字元結尾。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.