程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++Primer筆記(3),primer筆記

C++Primer筆記(3),primer筆記

編輯:C++入門知識

C++Primer筆記(3),primer筆記


標准庫類型string表示可變長的字符序列,使用前先包含string頭文件。(哈哈,終於可以逃脫C語言中的str函數系列了。)因為是標准庫的一部分,所以string被定義在命名空間std中。所以你懂該怎麼做(參見筆記(2))。

在stl_string_fwd.h中找到如下語句:

typedef basic_string<char>    string;

basic_string是一個模板類,在string中有定義。可以看是對char類型的一個封裝,未對其進行深挖,所以本次筆記只做為string操作手冊使用。

初始化string對象的方式:

string s1;              //默認初始化,s1為空串
string s2(s1);          //s2是s1的副本
string s2 = s1;         //等價於上一行
string s3("test");      //s3是字面值"test"的副本,除了最後的空字符外
string s3 = "test";     //等價於上一行
string s4(n, 'c');      //s4被初始化為n個'c'組成的字符串
string s5(cp, n);       //s5是cp指向的字符串數組中前n個字符的拷貝。此數組至少應該包含n個字符
string s6(s5, n);       //s6是s5從下標n開始的字符的拷貝。若s5.size()<n,則構造函數行為未定義
string s6(s5, n, m);    //s6是s5從下標n開始m個字符的拷貝。若s5.size()<n,則構造函數行為未定義。不管m值是多少,構造函數至多拷貝s5.size() - n個字符

 

string對象上的操作:

os << s            將s寫到輸入流os當中,返回os
is  >> s           從is中讀取字符串賦給s,字符串以空白分隔,返回is
getline(is, s)     從is中讀取一行賦給s,返回is
s.empty()          判斷s是否為空,為空返回true,否則返回false
s.size()           返回s中字符的個數
s[n]               返回s中第n個字符的引用,位置n從0開始
s1 + s2            返回s1、s2拼接後的內容
s1 = s2            用s2的副本代替s1中內容
s1 == s2         判斷s1、s2是否相等
s1 != s2           是否不相等
<,<=,>,>=          利用字符在字典中的順序進行比較,從首個字符開始向後依次比較,一有結果立刻返回。

插入

s.insert(pos, args);    //在pos之前插入args指定的字符。pos可以是一個下標或者迭代器。接受下標的版本返回一個指向s的引用,接受迭代器的版本返回指向第一個插入字符的迭代器。

刪除

s.erase(pos, len);    //刪除從位置pos開始的len個字符。如果len被省略,則刪除從pos開始直至s末尾的所有字符。返回一個指向s的引用

替換

s.assign(args);    //將s中的字符替換為args指定的字符。返回一個指向s的引用
s.replace(n, m, args);    //刪除從下標n開始m個字符或刪除迭代器n和m表示的范圍中的字符,替換為args指定的字符。

追加

s.append(args);    //將args中的字符追加到s中,返回一個指向s的引用

子字符串操作

s.substr(pos, n);    //返回一個string,包含s中從pos開始的n個字符的拷貝。pos的默認值是0,n的默認值是s.size() - pos,即拷貝從pos開始的所有字符

搜索

s.find(args);                //查找s中args第一次出現的位置
s.rfind(args);               //查找s中args最後一次出現的位置
s.find_first_of(args);       //在s中查找args中任何一個字符第一次出現的位置
s.find_last_of(args);        //在s中查找args中任何一個字符最後一次出現的位置
s.find_first_not_of(args);   //在s中查找第一個不在args中的字符
s.find_last_not_of(args);    //在s中查找最後一個不在args中的字符

比較

s.compare(s1);                         //比較string s和s1
s1.compare(pos1, n1, s2);              //將s1中從pos1開始的n1個字符與s2進行比較
s1.compare(pos1, n1, s2, pos2, n2);    //將s中從pos1開始的n1個字符與s2中從pos2開始的n2個字符串進行比較
s.compare(cp);                         //比較s和cp指向的以空字符結尾的字符串數組
s1.compare(pos1, n1, cp);              //將s1和從pos1開始的n1個字符與cp指向的以空字符結尾的字符串數組比較
s1.compare(pos1, n1, cp, n2);          //將s1和從pos1開始的n1個字符與指針cp指向的地址開始的n2個字符進行比較

 string和數值之間的轉換

to_string(var);    //返回數值val的string表示。val可以是任意算術類型

/*返回s的起始子串的數值*/ stoi(s, p, b); //返回int型 stol(s, p, b); //返回long型 stoul(s, p, b); //返回unsigned long型 stoll(s, p, b); //返回long long型 stoull(s, p, b); //返回unsigned long long型 stof(s, p, b); //返回float型 stod(s, p, b); //返回double型 stold(s, p, b); //返回long double型 /*其中p為size_t類型的指針,用來存放第一個非數值字符的下標,默認為0*/ /*b表示進制,默認為10*/

此處應注意在string轉數值時,所提供的string中第一個非空白字符必須是數值中可能出現的字符!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved