1. 程式人生 > >關於string的成員函式substr

關於string的成員函式substr

這個函式的原型是substr(size_type off,size_type count)

第一個引數表示在string的char陣列中的偏移量,count是從這個偏移的位置開始,字串的長度。

這兩個引數的錯誤使用將導致程式crash或者獲得錯誤的結果。

主要兩種錯誤情況,off大於陣列的長度或者小於0,和count大於字串的長度或者count小於0

對於off的錯誤,當其大於陣列的長度是,即是陣列越界錯誤,程式crash。
當提供的off小於0時,由於引數型別為unsigned int,所以將做強制轉化,off變為一個很大的整數,因而還是導致越界錯誤,程式crash。

對於count的錯誤,當 count + off大於陣列的長度時,substr內部會先判斷是否其超過陣列的長度,如果超過,其將按照陣列的最大下標處理。因而其等同於substr(off,string.size()-off);

同理,當count小於0時,其將轉化為一個很大的整數,結果還是等同於substr(off,string.size()-off);

綜上,在使用該函式時,一定要注意傳入的引數,以防止程式crash,或者獲得錯誤的結果。