目錄(?)
[-]
使用場合
宣告和初始化方法
宣告初始化
字串處理
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...