size_type

size_type

size_type由string類類型和vector類類型定義的類型,用以保存任意string對象或vector對象的長度,標準庫類型將size_type定義為unsigned類型。

string抽象意義是字元串, size()的抽象意義是字元串的尺寸, string::size_type抽象意義是尺寸單位類型。

基本介紹

  • 中文名:size_type
  • 類型:函式
  • 定義:unsigned類型
  • 隸屬:程式代碼
意義,說明,其它範例,

意義

string::size_type它在不同的機器上,長度是可以不同的,並非固定的長度。但只要你使用了這個類型,就使得你的程式適合這個機器。與實際機器匹配。
string::size_type從本質上來說,是一個整型數。關鍵是由於機器的環境,它的長度有可能不同。 例如:我們在使用 string::find的函式的時候,它返回的類型就是 string::size_type類型。而當find找不到所要找的字元的時候,它返回的是 npos的值,這個值是與size_type相關的。假如,你是用
string s;     int rc = s.find(/*.....*/);
然後判斷,
    if ( rc == string::npos ) 
這樣在不同的機器平台上表現就不一樣了。如果,你的平台的string::size_type的長度正好和int相匹配,那么這個判斷會僥倖正確。但換成另外的平台,有可能 string::size_type的類型是64位長度的,那么判斷就完全不正確了。 所以,正確的應該是:
string::size_type rc = s.find(/*.....*/);或auto rc = s.find(/*.....*/);
這個時候使用
if ( rc == string::npos )
就會正確了。

說明

st.size()
表示st中的字元數量,字元數量的統計是由 1 開始累計計算的,所以字元數量正好比字元串的下標索引數(由 0 開始累計計算)大 1 ,這裡的
index != st.size();  index < st.size();
效果等同。

其它範例

C++Primer+中文第四版,涉及 size_type 的例:
// 改字元串中間隔字元為 'x'    for ( string::size_type i=0; i!=s.size(); i=i+2 )        s[i]='x';
使用 size_type 時,一定要注意包含頭檔案 string,否則會提示未申明。用 string::size_type 方式,來使用string 類中聲明的參數。

相關詞條

熱門詞條

聯絡我們