C string字串型別相關知識點

2022-02-28 12:38:51 字數 1866 閱讀 6260

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 using

namespace

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...