string簡介
string語法基礎
輸出測試**1
string的比較操作
string類的常用建構函式:
string類的常用函式
1、引入標頭檔案
string要使用先引入標頭檔案
#include
注意這裡的是string
,學了c的同學請注意,不是string.h
底層:是一種順序表的結構,元素是char型別的字元
2、命名空間
string是模板類,位於命名空間std中,通常為了使用方便還要加上這樣一句
using
namespace std;
c++在c的基礎上增加了類,和模板(stl),string就是c++的乙個類模板。但是c沒有string,它有字元陣列。
注意:c的字串是指標(陣列的本質是指標),而c++的字串是類模板
string可以儲存一串字元,所以叫做字串,乙個string變數c++好像並沒有規定最大限度,反正可以儲存非常大的量,我們可以用s.max_size()
的方法檢視最大限度,就是可以儲存多少個字元,因為乙個字元是乙個位元組。(max_size()的數值是4611686018427387897)
string儲存參考:
string也可以變成乙個陣列,這樣可以儲存多行的資料
定義定義乙個string變數很簡單
string s;
即可
輸入也很簡單,直接用cin就足以了
string s;
cin >> s;
即可
整行輸入
用getline輸入法
string s;
getline
(cin, s)
;
即可輸入帶有空格的字串
輸出
cout << s << endl;
就足夠,可以用printf和scanf代替
測試**1
#include
#include
using
namespace std;
int main (
)
程式的執行結果如下:
hello world
world
worabcde
abcaaaaa
hello
string的比較操作
你可以用 ==、>、<、>=、<=、和!=比較字串,可以用+或者+=操作符連線兩個字串,並且可以用獲取特定的字元。
#include
#include
using
namespace std;
intmain()
結果:
please input your name:
zhang↙
you are not wang!
zhang, welcome!
zhang, welcome!
上例中,cout<< str[i];
可換為:cout<< str.at(i);
下面的string變數統一叫做str
assign函式
str.assign(「abc」) ——把str清空,重新賦值」abc」
str.assign(「abc」, 2) ——把str清空,重新賦值」abc」,然後保留2位,str=「ab」
str.length() ——返回字串長度、
str.size() ——和length
一樣
str**.reasize**(10) ——設定當前 str 的大小為10,若大小大與當前串的長度,\0 來填充
str**.reasize**(10,char c) ——設定當前 str 的大小為10,若大小大與當前串的長度,字0符c 來填充
str.reserve(10) ——設定str的容量 10,不會填充資料
str.swap(str1) ——交換 str1 和 str 的字串
str.push_back(『a』) ——在str末尾新增乙個字元 『a』 ,引數必須是字元形式
insert函式方法:
str.insert(2,3,『a』)——在str下標為2的位置新增 3個 字元』a』
str.insert(2,「abc」)——在str下標為2的位置新增 字串 「abc」
str.insert(2,「abc」,1)——在str下標為2的位置新增 字串 「abc」 中 1個 字元
str.insert(2,「abc」,1,1)——在str下標為2的位置新增 字串 「abc」 中從位置 1 開始的 1 個字元
注:上個函式引數中加粗的1,可以是string::npos,這時候最大值,從 位置1 開始後面的全部字元
str.erase(2)——刪除 下標2 的位置開始,之後的全刪除
str.erase(2,1)——刪除 下標2 的位置開始,之後的 1個 刪除
str.clear()——刪除 str 所有
str.replace(2,4,「abcd」)——從 下標2 的位置,替換 4個位元組 ,為"abcd"
str.empty()——判空
反轉相關
引入標頭檔案#include
reverse
(str.
begin()
, str.
end())
;
格式如上,可以原封不動的用這個語句,意思是將str的開始到結尾反轉,當然begin和end也可以改成具體的值
拷貝相關
str1=str.substr(2)——提取子串,提取出 str 的 下標為2 到末尾,給 str1
str1=str.substr(2,3)——提取子串,提取出 str 的 下標為2 開始,提取三個位元組,給 str1
const char* s1=str.data()——將string類轉為字串陣列,返回給s1
char* s=new char[10]
str.copy(s,count,pos)——將 str 裡的 pos 位置開始,拷貝 count個 字元,存到 s 裡
參考:1、
st char* s1=str.data()——將string類轉為字串陣列,返回給s1
char* s=new char[10]
str.copy(s,count,pos)——將 str 裡的 pos 位置開始,拷貝 count個 字元,存到 s 裡
參考:1、
2、
CString類詳細介紹
這是本人第一次寫csdn部落格,如果有寫得不好的地方請各位大佬幫忙指出不足之處,本人定會謙虛請教。眾所周知,mfc 微軟基礎類庫 是基於windows介面開發的,它封裝了大部分的windows api 應用程式介面 函式,由c格式的函式公升級為類庫。而cstring字串類是mfc中比較常用的乙個類,...
c string類詳細說明
from 之所以拋棄char 的字串而選用c 標準程式庫中的string類,是因為他和前者比較起來,不必擔心記憶體是否足夠 字串長度等等,而且作為乙個泛型類出現,他整合的操作函式足以完成我們大多數情況下 甚至是100 的需要。我們可以用 進行賦值操作,進行比較,做串聯 是不是很簡單?我們盡可以把它看...
C String類的實現
參考c primer.string類的實現,清翔兔 06,jan.include using namespace std class string string void private char m data inline string string const char str if str m...