關於C 的問題,關於C 的一個問題?

2021-08-26 05:05:40 字數 1061 閱讀 6378

1樓:

size_type應該是c++為例如string類和許多其他庫型別定義的配套型別,使這些庫型別的使用與機器無關.所以不能單獨用。具體如下

size_type是為string類型別和vector類型別定義的型別,用以儲存任意string物件或vector物件的長度,標準庫型別將size_type定義為unsigned型別 string抽象意義是字串, size()的抽象意義是字串的尺寸, string::size_type抽象意義是尺寸單位型別 string::size_type它在不同的機器上,長度是可以不同的,並非固定的長度。

但只要你使用了這個型別,就使得你的程式適合這個機器。與實際機器匹配。 eg 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(.....); 這個時候使用 if ( rc == string::npos )就回正確了。

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

size();的效果等同於index < st.size();

2樓:匿名使用者

因為vector是模板類,要有模板引數。

關於C語言的問題,求教,一個關於C語言的問題,求教!!

a b 是賦值 a b 是等號 這是新手長犯錯誤 c語言中經常犯的毛病!初學者必看!c 語言的最大特點是 功能強 使用方便靈活。c編譯的程式對語法檢查並不象其它高階語言那麼嚴格,這就給程式設計人員留下 靈活的餘地 但還是由於這個靈活給程式的除錯帶來了許多不便,尤其對初學c語言的人來說,經常會出一些連...

關於一個C語言程式的問題。C語言程式設計問題?

int a 定義一個整型變數a char b 100 定義一個字元陣列b,它有100個元素,每個元素都是char型別。scanf d a 讀取一個整數並儲存到變數a中。d表示讀取整數,若使用 f則表示讀取float型別的數。itoa a,b,2 itoa 是一個函式,把a轉換成2進位制的字串,儲存到...

關於c語言的簡單問題,一個關於c語言的簡單問題

scanf f,radius 改為scanf f radius printf f n,area 改為printf f n area 恩 你的錯誤就是printf和scanf函式的格式不對啊其它的都很好啊 把書本上的格式用程式來除錯下 這樣記憶更深刻 scanf f radius printf f n...