C語言字符串操作總結(jié)大全(超詳細(xì))

 本篇文章是對C語言字符串操作進(jìn)行了詳細(xì)的總結(jié)分析,需要的朋友參考下

  1)字符串操作

  strcpy(p, p1) 復(fù)制字符串

  strncpy(p, p1, n) 復(fù)制指定長度字符串

  strcat(p, p1) 附加字符串

  strncat(p, p1, n) 附加指定長度字符串

  strlen(p) 取字符串長度

  strcmp(p, p1) 比較字符串

  strcasecmp忽略大小寫比較字符串

  strncmp(p, p1, n) 比較指定長度字符串 strchr(p, c) 在字符串中查找指定字符 strrchr(p, c) 在字符串中反向查找 strstr(p, p1) 查找字符串 strpbrk(p, p1) 以目標(biāo)字符串的所有字符作為集合循未,在當(dāng)前字符串查找該集合的任一元素 strspn(p, p1) 以目標(biāo)字符串的所有字符作為集合陷猫,在當(dāng)前字符串查找不屬于該集合的任一元素的偏移 strcspn(p, p1) 以目標(biāo)字符串的所有字符作為集合秫舌,在當(dāng)前字符串查找屬于該集合的任一元素的偏移

  * 具有指定長度的字符串處理函數(shù)在已處理的字符串之后填補(bǔ)零結(jié)尾符

  2)字符串到數(shù)值類型的轉(zhuǎn)換

  strtod(p, ppend) 從字符串 p 中轉(zhuǎn)換 double 類型數(shù)值,并將后續(xù)的字符串指針存儲到 ppend 指向的 char* 類型存儲绣檬。

  strtol(p, ppend, base) 從字符串 p 中轉(zhuǎn)換 long 類型整型數(shù)值足陨,base 顯式設(shè)置轉(zhuǎn)換的整型進(jìn)制,設(shè)置為 0 以根據(jù)特定格式判斷所用進(jìn)制娇未,0x, 0X 前綴以解釋為十六進(jìn)制格式整型墨缘,0 前綴以解釋為八進(jìn)制格式整型

  atoi(p) 字符串轉(zhuǎn)換到 int 整型

  atof(p) 字符串轉(zhuǎn)換到 double 符點(diǎn)數(shù)

  atol(p) 字符串轉(zhuǎn)換到 long 整型

  3)字符檢查

  isalpha() 檢查是否為字母字符

  isupper() 檢查是否為大寫字母字符

  islower() 檢查是否為小寫字母字符

  isdigit() 檢查是否為數(shù)字

  isxdigit() 檢查是否為十六進(jìn)制數(shù)字表示的有效字符 isspace() 檢查是否為空格類型字符 iscntrl() 檢查是否為控制字符 ispunct() 檢查是否為標(biāo)點(diǎn)符號 isalnum() 檢查是否為字母和數(shù)字 isprint() 檢查是否是可打印字符 isgraph() 檢查是否是圖形字符,等效于 isalnum() | ispunct()

  4)函數(shù)原型

  原型:strcpy(char destination[], const char source[]);

  功能:將字符串source拷貝到字符串destination中

  例程:

 #include

  #include

  voidmain(void)

  {

  charstr1[10] = {"TsinghuaOK"};

  charstr2[10] = {"Computer"};

  cout <  }


  運(yùn)行結(jié)果是:Computer

  第二個字符串將覆蓋掉第一個字符串的所有內(nèi)容!

  注意:在定義數(shù)組時零抬,字符數(shù)組1的字符串長度必須大于或等于字符串2的字符串長度镊讼。不能用賦值語句將一個字符串常量或字符數(shù)組直接賦給一個字符數(shù)組。所有字符串處理函數(shù)都包含在頭文件string.h中平夜。

  strncpy(char destination[], const char source[], int numchars); strncpy:將字符串source中前numchars個字符拷貝到字符串destination中蝶棋。 strncpy函數(shù)應(yīng)用舉例 原型:strncpy(char destination[], const char source[], int numchars); 功能:將字符串source中前numchars個字符拷貝到字符串destination中

  例程:

  #include

  #include

  voidmain(void)

  {

  charstr1[10] = {"Tsinghua "};

  charstr2[10] = {"Computer"};

  cout <  }


  運(yùn)行結(jié)果:Comnghua

  注意:字符串source中前numchars個字符將覆蓋掉字符串destination中前numchars個字符!

  原型:strcat(char target[], const char source[]);

  功能:將字符串source接到字符串target的后面

  例程:

  #include

  #include

  voidmain(void)

  {

  charstr1[] = {"Tsinghua "};

  charstr2[] = {"Computer"};

  cout <  }


  運(yùn)行結(jié)果:Tsinghua Computer

  注意:在定義字符數(shù)組1的長度時應(yīng)該考慮字符數(shù)組2的長度,因為連接后新字符串的長度為兩個字符串長度之和忽妒。進(jìn)行字符串連接后丢间,字符串1的結(jié)尾符將自動被去掉裙品,在結(jié)尾串末尾保留新字符串后面一個結(jié)尾符寞奸。

  原型:strncat(char target[], const char source[], int numchars);

  功能:將字符串source的前numchars個字符接到字符串target的后面

  例程:

  #include

  #include

  voidmain(void)

  {

  charstr1[] = {"Tsinghua "};

  charstr2[] = {"Computer"};

  cout <  }


  運(yùn)行結(jié)果:Tsinghua Com

  原型:int strcmp(const char firststring[], const char secondstring);

  功能:比較兩個字符串firststring和secondstring

  例程:

  #include

  #include

  voidmain(void)

  {

  charbuf1[] ="aaa";

  charbuf2[] ="bbb";

  charbuf3[] ="ccc";

  int ptr;

  ptr = strcmp(buf2,buf1);

  if(ptr >0)

  cout <<"Buffer 2 is greater than buffer 1"<else  cout <<"Buffer 2 is less than buffer 1"<  ptr = strcmp(buf2,buf3);

  if(ptr >0)

  cout <<"Buffer 2 is greater than buffer 3"<else  cout <<"Buffer 2 is less than buffer 3"<  }


  運(yùn)行結(jié)果是:Buffer 2 is less than buffer 1

  Buffer 2 is greater than buffer 3

  原型:strlen( const char string[] );

  功能:統(tǒng)計字符串string中字符的個數(shù)

  例程:

 #include

  #include

  voidmain(void)

  {

  charstr[100];

  cout <<"請輸入一個字符串:";

  cin >>str;

  cout <<"The length of the string is :"<  }

  運(yùn)行結(jié)果The length of the string is x (x為你輸入的字符總數(shù)字)

  注意:strlen函數(shù)的功能是計算字符串的實際長度炊豪,不包括'\0'在內(nèi)。另外鸯檬,strlen函數(shù)也可以直接測試字符串常量的長度决侈,如:strlen("Welcome")。

  void *memset(void *dest, int c, size_t count);

  將dest前面count個字符置為字符c. 返回dest的值.

  void *memmove(void *dest, const void *src, size_t count);

  從src復(fù)制count字節(jié)的字符到dest. 如果src和dest出現(xiàn)重疊, 函數(shù)會自動處理. 返回dest的值.

  void *memcpy(void *dest, const void *src, size_t count);

  從src復(fù)制count字節(jié)的字符到dest. 與memmove功能一樣, 只是不能處理src和dest出現(xiàn)重疊. 返回dest的值.

  void *memchr(const void *buf, int c, size_t count); 在buf前面count字節(jié)中查找首次出現(xiàn)字符c的位置. 找到了字符c或者已經(jīng)搜尋了count個字節(jié), 查找即停止. 操作成功則返回buf中首次出現(xiàn)c的位置指針, 否則返回NULL. void *_memccpy(void *dest, const void *src, int c, size_t count); 從src復(fù)制0個或多個字節(jié)的字符到dest. 當(dāng)字符c被復(fù)制或者count個字符被復(fù)制時, 復(fù)制停止. 如果字符c被復(fù)制, 函數(shù)返回這個字符后面緊挨一個字符位置的指針. 否則返回NULL. int memcmp(const void *buf1, const void *buf2, size_t count);

  比較buf1和buf2前面count個字節(jié)大小.

  返回值< 0, 表示buf1小于buf2;

  返回值為0, 表示buf1等于buf2;

  返回值> 0, 表示buf1大于buf2.

  int memicmp(const void *buf1, const void *buf2, size_t count);

  比較buf1和buf2前面count個字節(jié). 與memcmp不同的是, 它不區(qū)分大小寫.

  返回值同上.

  char *strrev(char *string);

  將字符串string中的字符順序顛倒過來. NULL結(jié)束符位置不變. 返回調(diào)整后的字符串的指針.

  char *_strupr(char *string);

  將string中所有小寫字母替換成相應(yīng)的大寫字母, 其它字符保持不變. 返回調(diào)整后的字符串的指針.

  char *_strlwr(char *string);

  將string中所有大寫字母替換成相應(yīng)的小寫字母, 其它字符保持不變. 返回調(diào)整后的字符串的指針.

  char *strchr(const char *string, int c);

  查找字 串string中首次出現(xiàn)的位置, NULL結(jié)束符也包含在查找中. 返回一個指針, 指向字符c在字符串string中首次出現(xiàn)的位置, 如果沒有找到, 則返回NULL.

  char *strrchr(const char *string, int c);

  查找字符c在字符串string中最后一次出現(xiàn)的位置, 也就是對string進(jìn)行反序搜索, 包含NULL結(jié)束符.

  返回一個指針, 指向字符c在字符串string中最后一次出現(xiàn)的位置, 如果沒有找到, 則返回NULL.

  char *strstr(const char *string, const char *strSearch);

  在字符串string中查找strSearch子串. 返回子串strSearch在string中首次出現(xiàn)位置的指針. 如果沒有找到子串strSearch, 則返回NULL. 如果子串strSearch為空串, 函數(shù)返回string值.

  char *strdup(const char *strSource);

  函數(shù)運(yùn)行中會自己調(diào)用malloc函數(shù)為復(fù)制strSource字符串分配存儲空間, 然后再將strSource復(fù)制到分配到的空間中. 注意要及時釋放這個分配的空間. 返回一個指針, 指向為復(fù)制字符串分配的空間; 如果分配空間失敗, 則返回NULL值.

  char *strcat(char *strDestination, const char *strSource);

  將源串strSource添加到目標(biāo)串strDestination后面, 并在得到的新串后面加上NULL結(jié)束符. 源串strSource的字符會覆蓋目標(biāo)串strDestination后面的結(jié)束符NULL. 在字符串的復(fù)制或添加過程中沒有溢出檢查, 所以要保證目標(biāo)串空間足夠大. 不能處理源串與目標(biāo)串重疊的情況. 函數(shù)返回strDestination值.

  char *strncat(char *strDestination, const char *strSource, size_t count);

  將源串strSource開始的count個字符添加到目標(biāo)串strDest后. 源串strSource的字符會覆蓋目標(biāo)串strDestination后面的結(jié)束符NULL. 如果count大于源串長度, 則會用源串的長度值替換count值. 得到的新串后面會自動加上NULL結(jié)束符. 與strcat函數(shù)一樣, 本函數(shù)不能處理源串與目標(biāo)串重疊的情況. 函數(shù)返回strDestination值.

  char *strcpy(char *strDestination, const char *strSource);

  復(fù)制源串strSource到目標(biāo)串strDestination所指定的位置, 包含NULL結(jié)束符. 不能處理源串與目標(biāo)串重疊的情況.函數(shù)返回strDestination值.

  char *strncpy(char *strDestination, const char *strSource, size_t count);

  將源串strSource開始的count個字符復(fù)制到目標(biāo)串strDestination所指定的位置. 如果count值小于或等于strSource串的長度, 不會自動添加NULL結(jié)束符目標(biāo)串中, 而count大于strSource串的長度時, 則將strSource用NULL結(jié)束符填充補(bǔ)齊count個字符, 復(fù)制到目標(biāo)串中. 不能處理源串與目標(biāo)串重疊的情況.函數(shù)返回strDestination值.

  char *strset(char *string, int c);

  將string串的所有字符設(shè)置為字符c, 遇到NULL結(jié)束符停止. 函數(shù)返回內(nèi)容調(diào)整后的string指針.

  char *strnset(char *string, int c, size_t count);

  將string串開始count個字符設(shè)置為字符c, 如果count值大于string串的長度, 將用string的長度替換count值. 函數(shù)返回內(nèi)容調(diào)整后的string指針.

  size_t strspn(const char *string, const char *strCharSet);

  查找任何一個不包含在strCharSet串中的字符 (字符串結(jié)束符NULL除外) 在string串中首次出現(xiàn)的位置序號. 返回一個整數(shù)值, 指定在string中全部由characters中的字符組成的子串的長度. 如果string以一個不包含在strCharSet中的字符開頭, 函數(shù)將返回0值.

  size_t strcspn(const char *string, const char *strCharSet);

  查找strCharSet串中任何一個字符在string串中首次出現(xiàn)的位置序號, 包含字符串結(jié)束符NULL.

  返回一個整數(shù)值, 指定在string中全部由非characters中的字符組成的子串的長度. 如果string以一個包含在strCharSet中的字符開頭, 函數(shù)將返回0值.

  char *strspnp(const char *string, const char *strCharSet);

  查找任何一個不包含在strCharSet串中的字符 (字符串結(jié)束符NULL除外) 在string串中首次出現(xiàn)的位置指針. 返回一個指針, 指向非strCharSet中的字符在string中首次出現(xiàn)的位置.

  char *strpbrk(const char *string, const char *strCharSet);

  查找strCharSet串中任何一個字符在string串中首次出現(xiàn)的位置, 不包含字符串結(jié)束符NULL.

  返回一個指針, 指向strCharSet中任一字符在string中首次出現(xiàn)的位置. 如果兩個字符串參數(shù)不含相同字符, 則返回NULL值.

  int strcmp(const char *string1, const char *string2);

  比較字符串string1和string2大小.

  返回值< 0, 表示string1小于string2;

  返回值為0, 表示string1等于string2;

  返回值> 0, 表示string1大于string2.

  int stricmp(const char *string1, const char *string2);

  比較字符串string1和string2大小京闰,和strcmp不同, 比較的是它們的小寫字母版本.返回值與strcmp相同.

  int strcmpi(const char *string1, const char *string2);

  等價于stricmp函數(shù), 只是提供一個向后兼容的版本.

  int strncmp(const char *string1, const char *string2, size_t count);

  比較字符串string1和string2大小颜及,只比較前面count個字符. 比較過程中, 任何一個字符串的長度小于count, 則count將被較短的字符串的長度取代. 此時如果兩串前面的字符都相等, 則較短的串要小.

  返回值< 0, 表示string1的子串小于string2的子串;

  返回值為0, 表示string1的子串等于string2的子串;

  返回值> 0, 表示string1的子串大于string2的子串.

  int strnicmp(const char *string1, const char *string2, size_t count);

  比較字符串string1和string2大小,只比較前面count個字符. 與strncmp不同的是, 比較的是它們的小寫字母版本. 返回值與strncmp相同.

  char *strtok(char *strToken, const char *strDelimit);

  在strToken 串中查找下一個標(biāo)記, strDelimit字符集則指定了在當(dāng)前查找調(diào)用中可能遇到的分界符. 返回一個指針, 指向在strToken中找到的下一個標(biāo)記. 如果找不到標(biāo)記, 就返回NULL值. 每次調(diào)用都會修改strToken內(nèi)容, 用NULL字符替換遇到的每個分界符.

  c++概念字符串操作

  一蹂楣、char_traits 字符特征類

  1)意義:包裝特定串元素的通用行為界面,以便容器實現(xiàn)時依據(jù)特征信息而執(zhí)行特定行為

  2)定義了通用類型名

  typedef _Elem char_type;

  typedef int int_type;

  typedef streampos pos_type;

  typedef streamoff off_type;

  typedef mbstate_t state_type;

  其中 int_type 表示字符元素轉(zhuǎn)換到特定編碼時的整型表示讯蒲,pos_type, off_type 分別作為字符串索引和字符串元素偏移的類型痊土,類似容器迭中的指針,迭代類型和指針墨林,迭代器的偏移類型赁酝。最后的 state_type 用于存儲流狀態(tài),如出錯旭等,格式控制等等酌呆。

  3)定義了字符 / 字符串操作的包裝界面,以便通用算法的調(diào)用

  assign(a, b) 定義將 b 字符賦值給 a 字符的過程搔耕,實現(xiàn) a.operator = 的行為

  eq(a, b) 定義 a 字符和 b 字符的相等關(guān)系隙袁,實現(xiàn) a.operator == 的行為

  lt(a, b) 定義 a 小于 b 的關(guān)系,實現(xiàn) a.operator < 的行為

  compare(a_ptr, b_ptr, cnt) 定義兩組字符串的比較,返回 int 類型菩收,實現(xiàn)類似 memcmp 的行為

  length(ptr) 定義取字符串長度梨睁,實現(xiàn)類似 strlen 的行為

  copy(a_ptr, b_ptr, cnt) 定義兩組字符串的復(fù)制,實現(xiàn)類似 memcpy 的行為

  move(a_ptr, b_ptr, cnt) 定義兩組字符串的不重疊復(fù)制娜饵,實現(xiàn)類似 memmove 的行為

  assign(ptr, cnt, ch) 定義了填充字符串的過程坡贺,實現(xiàn)類似 memset 的行為

  to_int_type(ch) 定義了 char_type 到 int_type 整型的轉(zhuǎn)換過程

  to_char_type(n) 定義了 int_type 到 char_type 字符型的轉(zhuǎn)換過程

  eq_int_type(a, b) 定義兩個和當(dāng)前 char_type 類型對應(yīng)的 int_type 的相等關(guān)系

  eof() 定義字符串結(jié)尾符,使用整型表示

  not_eof(n) 定義非字符串結(jié)尾符箱舞,若輸入結(jié)尾符遍坟,則返回 1晴股,其他輸入返回原值队魏,即總是不返回 eof()

  4)int_type 類型應(yīng)是當(dāng)前字符類型的整型編碼

  二胡桨、std::string 并不是序列容器刽虹,沒有 front() 和 back() 界面用于取出前端和尾端的元素呢诬,使用 std::string::operator [] 并傳遞 streampos 類型取得特定元素,如 std::string::size() - 1 作為索引取得最后一個字符

  三阀圾、basic_string 支持的初始化

  1)默認(rèn)初始化

  2)分配器

  3)復(fù)制構(gòu)造

  4)局部復(fù)制 [_Roff, _Roff + _Count)

  5)局部復(fù)制 + 分配器

  6)C 字符串 [_Ptr, )

  7)C 字符串 + _Count [_Ptr, _Ptr + _Count)

  8)C 字符串 + 分配器

  9)C 字符串 + _Count + 分配器 [_Ptr, _Ptr + _Count)

  10)_Count * _Ch

  11)_Count * _Ch + 分配器

  12)迭代器 [_ItF, _ItL)

  13)迭代器 + 分配器

  字符到串不能初始化初烘,但支持 operator = 賦值和 operator += 累加賦值運(yùn)算分俯。

  四、字符串的區(qū)間有效性

  對串的索引訪問在超過字符串的有效區(qū)間時吗铐,因為串的在實現(xiàn)上對內(nèi)置的字符緩沖區(qū)執(zhí)行下標(biāo)訪問杏节,所以不會導(dǎo)致異常典阵,但是將得到不可預(yù)知的結(jié)果谣妻,通常是不可用的蹋半。

  將其他字符串作為右值輸入時,對該串取出計數(shù)大于串大小時按串大小計算染突。

  std::basic_string::size_type 的實際類型為 size_t辈灼,在 Visual C++ 7.1 中實現(xiàn)為 unsigned,std::basic_string::npos 被靜態(tài)設(shè)定為

  (basic_string<_Elem, _Traits, _Alloc>::size_type)(-1);

  在查找子字符串等操作時司志,函數(shù)返回 npos 的值表示非法索引降宅。

  五腰根、比較字符串

  允許的比較對象

  1)compare(s2) 其他同類型字符串

  2)compare(p) C 風(fēng)格字符串

  3)compare(off, cnt, s2) [off, off + cnt) 同 s2 執(zhí)行比較

  4)compare(off, cnt, s2, off2, cnt2) [off, off + cnt) 同 s2 [off2, cnt2) 執(zhí)行比較

  5)compare(off, cnt, p) [off, off + cnt) 同 [p , ) 執(zhí)行比較

  6)compare(off, cnt, p, cnt2) [off, off + cnt) 同 [p, p + cnt2) 執(zhí)行比較

  返回 -1, 0, 1 作為小于、等于和大于的比較結(jié)果瘸恼。

  六册养、附加數(shù)據(jù)

  1)使用 operator += 接受其他字符串,C 風(fēng)格字符串和字符

  2)使用 push_back() 在尾部附加字符冰啃,并使得通過字符串構(gòu)造的 back_iterator 可以訪問

  3)append() 附加

  1刘莹、append(s) 追加字符串

  2点弯、append(s, off, cnt) 追加字符串 s [off, off + cnt)

  3矿咕、append(p) 追加字符串 [p, )

  4、append(p, cnt) 追加字符串 [p, p + cnt)

  5捡絮、append(n, c) 填充 n * c

  6福稳、append(InF, InL) 追加輸入流 [InF, InL)

  4)insert() 插入

  1、insert(off, s2) 插入字符串

  2鼓拧、insert(off, s2, off2, cnt2) 插入字符串 s [off2, off2 + cnt2)

  3越妈、insert(off, p) 插入字符串 [p, )

  4、insert(off, p, cnt) 插入字符串 [p, p + cnt)

  5酌住、insert(off, n, c) 插入 n * c

  6阎抒、insert(iter) 元素默認(rèn)值填充

  7挠蛉、insert(iter, c) 插入特定元素

  8、insert(iter, n, c) 插入 n*c

  9质涛、insert(iter, InF, InL) 插入 [InF, InL)

  5)operator +(a, b)

  字符串關(guān)聯(lián)運(yùn)算符重載中支持 operator + 的形式

  1掰担、s + s

  2带饱、s + p

  3、s + c

  4教寂、p + s

  5执庐、c + s

  七轨淌、查找看尼、替換和清除

  1)find() 查找

  1盟步、find(c, off) 在 s [off, npos) 中查找 c

  2却盘、find(p, off, n) 在 s [off, npos) 中查找 [p, p + n)

  3、find(p, off) 在 s [off, npos) 中查找 [p, )

  4北专、find(s2, off) 在 s [off, npos) 中查找 s2

  2)find() 的變種

  1拓颓、rfind() 具有 find() 的輸入形式描孟,反序查找

  2、find_first_of() 具有 find() 的輸入形式场航,返回第一個匹配的索引

  3溉痢、find_last_of() 具有 find() 的輸入形式憋他,返回倒數(shù)第一個匹配的索引

  4竹挡、find_first_not_of() 具有 find() 的輸入形式,返回第一個不匹配的索引

  5梯码、find_last_not_of() 具有 find() 的輸入形式轩娶,返回倒數(shù)第一個不匹配的索引

  3)replace() 替換

  1罢坝、replace(off, cnt, s2) 將 s [off, off + cnt) 替換成 s2

  2搅窿、replace(off, cnt, s2, off2, cnt2) 將 s [off, off + cnt) 替換成 s2 [off2, off2 + cnt2)

  3男应、replace(off, cnt, p) 將 s [off, off + cnt) 替換成 [p, )

  4、replace(off, cnt, p, cnt2) 將 s [off, off + cnt) 替換成 [p, p + cnt2)

  5沐飘、replace(off, cnt, n, c) 將 s [off, off + cnt) 替換成 c * n

  使用迭代器的情況:

  6耐朴、replace(InF, InL, s2) 將 [InF, InL) 替換成 s2

  7筛峭、replace(InF, InL, p) 將 [InF, InL) 替換成 [p, )

  8、replace(InF, InL, p, cnt) 將 [InF, InL) 替換成 [p, p + cnt)

  9镰吵、replace(InF, InL, n, c) 將 [InF, InL) 替換成 n * c

  10疤祭、replace(InF, InL, InF2, InL2) 將 [InF, InL) 替換成 [InF2, InL2)

  4)erase() 刪除

  1饵婆、erase(off, cnt) 從字符串 s 中刪除 s [off, off + cnt)

  2侨核、erase(iter) 從字符串 s 中刪除 *iter

  3芹关、erase(ItF, ItL) 從字符串 s 中刪除 [ItF, ItL)

  八侥衬、取出字符串

  1)取得 C 風(fēng)格字符串

  c_str() 返回常量類型的 C 風(fēng)格字符串指針,copy(ptr, cnt, off = 0) 則將指定大小的字符串復(fù)制到特定指針直颅。data() 在 Visual C++ 7.1 中僅僅調(diào)用了 c_str() 實現(xiàn)怀樟。

  2)取得子字符串

  substr(off, cnt) 取得 s [off, off + cnt) 的副本。

  3)復(fù)制子字符串

  copy(p, off, cnt) 將 s [off, off + cnt) 復(fù)制到 p往堡。

  九械荷、字符串的緩沖區(qū)管理

  字符串具有類似 std::vector 的緩沖區(qū)管理界面共耍。

  size() 取得有效元素長度

  max_size() 取得當(dāng)前內(nèi)存分配器能分配的有效空間

  reserve() 為緩沖區(qū)預(yù)留空間

  capacity() 取得緩沖區(qū)的容量

  resize() 重設(shè)串的長度吨瞎,可以為其指定初始化值

  十颤诀、定義輸入迭代器的尾端

  向 istream_iterator 傳遞輸入流對象以創(chuàng)建輸入迭代器遗淳,輸入迭代器持有輸入流對象的指針屈暗,默認(rèn)創(chuàng)建和讀取流失敗的情況下該指針被設(shè)置為 0恐锦。并且在實現(xiàn)輸入迭代器間的 operator == 相等運(yùn)算時一铅,進(jìn)行持有的流對象指針的相等比較,這樣卜录,默認(rèn)創(chuàng)建的輸入迭代器將被用于匹配輸入流的結(jié)束眶明。 * 當(dāng)輸入流讀取失敗搜囱,用戶執(zhí)行 if, while 條件判斷時绊汹,實際上先將判斷值轉(zhuǎn)換成 void* 類型西乖,或者根據(jù) operator ! 運(yùn)算符的返回結(jié)果获雕,對輸入流重載 operator void* 和 operator ! 運(yùn)算符被廓,可以定義輸入流在布爾表達(dá)式中的行為,使得當(dāng)流讀取失敗的情況下球碉,輸入迭代器可以通過布爾表達(dá)式來確認(rèn),而不是顯式訪問 fail() 成員函數(shù).


分享些C的資料便于學(xué)習(xí)參考

C語言編程基礎(chǔ)

http://www.makeru.com.cn/course/details/2233?s=45051

提升C編程能力

http://www.makeru.com.cn/live/1392_1166.html?s=45051

釋放潛能:學(xué)習(xí)效率提升豆拨、編程能力提升

http://www.makeru.com.cn/live/3507_1276.html?s=45051

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市弥搞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌粤铭,老刑警劉巖梆惯,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抱既,死亡現(xiàn)場離奇詭異,居然都是意外死亡蝗敢,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痪署,“玉大人,你說我怎么就攤上這事悯森∑耙觯” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長摔桦。 經(jīng)常有香客問我,道長兄世,這世上最難降的妖魔是什么鸥拧? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上盏缤,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好俩功,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布胰挑。 她就那樣靜靜地躺著豺谈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪丽惭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天,我揣著相機(jī)與錄音萄唇,去河邊找鬼。 笑死四敞,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播解滓,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼腮鞍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了桥狡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤掐禁,失蹤者是張志新(化名)和其女友劉穎峡扩,沒想到半個月后教届,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蓉冈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年熟嫩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡绰精,死狀恐怖卿樱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤裕寨,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布试和,位于F島的核電站好渠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏节视。R本人自食惡果不足惜拳锚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望寻行。 院中可真熱鬧霍掺,春花似錦、人聲如沸拌蜘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽简卧。三九已至兔魂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間举娩,已是汗流浹背析校。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留铜涉,地道東北人智玻。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像骄噪,于是被迫代替她去往敵國和親尚困。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評論 2 354