string::size_type
字串的size()成員函式應該似乎返回整型數值,但事實上
,str.size()返回是string::size_type型別的值
。string型別和其他許多庫型別都定義了一些配套型別(companion type)。通過這些配套型別,庫函式的使用就與機器無關(machine-independent)。
size_type與unsigned型(unsigned int 或 unsigned long)具有相同含義,而且保證足夠大的能夠儲存任意的string物件的長度。
string::size_type它在不同的機器上,長度是可以不同的,並非固定的長度。但只要你使用了這個型別,就使得你的程式適合這個機器。與實際機器匹配。
注意:不要把size的返回值賦給乙個int變數,一是unsigned 和 signed的大小問題,二是有些機器上int變數的表示範圍太小.
因此,為了避免溢位,儲存乙個string物件size的最安全的方法就是使用標準庫型別string::size_type.
string物件的索引也應為size_type型別。
string::npos表示size_type的最大值,用來表示不存在的位置。
find()成員函式的返回值為size_type
返回size_t或size_type的有sizeof(),strlen(),size()
#include usingnamespace
std;
intmain()
//輸出flag1:1
flag2:
1size_type:
18446744073709551615
int:-1 //返回-1表示不存在的位置
string::pos值:18446744073709551615 //因為它是無符號的,所以不是-1
size of
int:4
size of size_type:
8size of
long:4
string::find()方法和string::nopos靜態常量 (noposition)
string::find()函式:是乙個字元或字串查詢函式,該函式有唯一的返回型別string::size_type,即乙個無符號整形型別,可能是整數也可能是長整數。如果查詢成功,返回按照查詢規則找到的第乙個字元或者子串的位置;如果查詢失敗,返回string::npos,即-1(當然列印出的結果不是-1,而是乙個很大的數值,那是因為它是無符號的)。
string::npos靜態成員常量:是對型別為size_t的元素具有最大可能的值。當這個值在字串成員函式中的長度或者子長度被使用時,該值表示「直到字串結尾」。作為返回值他通常被用作表明沒有匹配。
string::npos是這樣定義的:static const size_type npos = -1;
因為string::size_type描述的是size,故需為無符號整數型類別。因為預設配置為size_t作為size_type,於是-1被轉換為無符號整數型別,npos也就成為了該類別的最大無符號值。不過實際值還是取決於size_type的實際定義型別,即無符號整型(unsigned int)的-1與無符號長整型(unsigned long)的-1是不同的。
push_back()方法
string中的push_back函式,作用是字串之後插入乙個字元。字串末尾加單個字元
c++ 中的vector標頭檔案裡面就有這個push_back函式,在vector類中作用為在vector尾部加入乙個資料。
C string型別字串的儲存方式
不知道你們有沒有看過string型別變數的成員資料,在string變數中好像真正儲存字串的是乙個叫 ptr的指標,它指向string所儲存的字串首位址。當string變數被定義時,如果未初始化,ptr就是乙個指向null的指標,而且 ptr看起來像乙個const char 型別的指標,如果它是乙個空...
C string 字串匹配
c inlcude c include find 在乙個字串中查詢乙個指定的單個字元或字元陣列。如果找到,就返回首次匹配的開始位置 如果沒有查詢到匹配的內容,就返回string npos。find first of 在乙個目標串中進行查詢,返回值是第乙個與指定字元組中任何字元匹配的字元位置。如果沒有...
C string 字串函式
december 8,2012 程式設計指南 和 連線字串 字串賦值 和 字串比較 例如a b,aa ab 比較字串 輸出 輸入字串 注意 使用過載的運算子 時,必須保證前兩個運算元至少有乙個為 string 型別。例如,下面的寫法是不合法的 include include intmain stri...