C string的用法和例子

2021-08-15 03:39:10 字數 3839 閱讀 5813

目錄(?)

[-]

使用場合

宣告和初始化方法

宣告初始化

字串處理

substr操作

insert操作

erase操作

string的搜尋操作

find和rfind函式

find_of函式

比較與轉換

compare函式

數值轉換

string是c++標準庫的乙個重要的部分,主要用於字串處理。可以使用輸入輸出流方式直接進行操作,也可以通過檔案等手段進行操作。同時c++的演算法庫對string也有著很好的支援,而且string還和c語言的字串之間有著良好的介面。雖然也有一些弊端,但是瑕不掩瑜。 

其中使用的**多數都是來自cpp官網,因為例子非常全。

想使用string首先要在標頭檔案當中加入< string > 

宣告方式也很簡單

宣告:

string s;//宣告乙個string 物件

string ss[10];//宣告乙個string物件的陣列

初始化:

使用等號的初始化叫做拷貝初始化,不使用等號的初始化叫做直接初始化。

#include 

using

namespace

std;

int main()

substr操作:

注意substr沒有迭代器作為引數的操作

#include 

using

namespace

std;

int main()

如果輸入的位置超過字元的長度,會丟擲乙個out_of_range的異常

insert操作:

**來自cpp官網,經過自己的整理 

注意用迭代器當引數和無符號數當引數的區別

#include 

using

namespace

std;

int main()

erase操作:

用來執行刪除操作 

刪除操作有三種

**來自cpp官網

#include 

#include

int main ()

#include 

#include

int main ()

replace的使用方法,replace支援使用無符號整數尋找位置,也支援用迭代器尋找位置

#include 

#include

int main ()

以上的replace操作可以用insert和erase的操作組合替換,但是replace操作更加方便。

assign操作:

assign操作在一起列容器當中都存在,比如vector等等。是乙個很基本的操作函式,string使用assign可以靈活的對其進行賦值。 

**來自cpp官網

#include 

#include

int main ()

string類中提供了很多效能優秀,使用方便的成員方法。而且在泛型演算法當中也有很多實用的技巧。

find和rfind函式:

find函式主要是查詢乙個字串是否在呼叫的字串中出現過,大小寫敏感。 

**來自cpp官網

#include 

using

namespace

std;

int main()

rfind函式就是找最後乙個出現的匹配字串,返回的位置仍然是從前往後數的。

#include 

using

namespace

std;

int main()

std::cout

<< str << '\n';

return

0;}

查詢的效率非常高,我沒看過stl原始碼剖析,但是感覺是用kmp實現的。呵呵,可以自己寫乙個。

find_….of函式:

#include 

using

namespace

std;

int main()

std::cout

<< str1 << '\n';

//在str2中找到第乙個不是消協英文本母和空格的字元

std::string str2 ("look for non-alphabetic characters...");

std::size_t found2 = str2.find_first_not_of("abcdefghijklmnopqrstuvwxyz ");

if (found2!=std::string::npos)

return

0;}

find_last_of和find_last_not_of與first基本相同,就不寫例子**了。

類似c語言的字串比較函式strcmp函式一樣,支援字串比較操作,同時也類似python、c#語言中的函式一樣,支援把數字和字串轉換。有些特性是c++11當中才有。 

注意編譯器bug:

在mingw編譯器當中如果版本低於3.8,雖然支援c++11但是裡面有乙個bug,就是不支援字串和陣列的轉換!要更新mingw的版本才可以,或者直接使用g++。

compare函式:

和strcmp函式一樣,如果兩個字串相等,那麼返回0,呼叫物件大於引數返回1,小於返回-1。 

在compare當中還支援部分比較,裡面有6個引數可以設定。

#include 

using

namespace

std;

int main()

由於string過載了運算子,可以直接用》,<,==來進行比較,也很方便。

數值轉換:

在io的部分有過數值和字串相互轉換的例子,使用的是stringstream函式,在c++11當中有定義好的現成的函式取呼叫,非常方便。

string和數值轉換

to_string(val)

把val轉換成string

stoi(s,p,b)

把字串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)

float

stod(s,p)

double

stold(s,p)

long double

//注意,下段**在mingw中會報錯!即使使用c++11編譯也一樣,無法識別to_string!

#include 

using

namespace

std;

int main()

C String的用法和示例

string s 宣告乙個string 物件 string ss 10 宣告乙個string物件的陣列 include using namespace std int main include using namespace std int main include using namespace ...

sscanf 的用法和例子

通過學習和使用個人認為,在字串格式不是很複雜,但是也並不簡單的時候用這個函式比較合適,這個尺度就要靠自己把握了,字串不是很複雜,但自己寫個處理的函式比較麻煩,效率也不高,就用這個函式,如果字串很複雜,那就用正規表示式吧。不多說了,看看下面這些介紹和列子吧!名稱 sscanf 從乙個字串中讀進與指定格...

CString用法集錦

1.cstring compare int compare lpctstr lpsz const 返回值 字串一樣 返回0 小於lpsz 返回 1 大於lpsz 返回1 區分大小字元 cstring s1 abc cstring s2 abd assert s1.compare s2 1 asser...