string型別操作
字串切割
str.substr(索引,切割的個數) -> 返回字串
注意:第二個引數為切割的個數
string buf = "abcdefg";
buf.substr(0, 2); // 結果為 "ab"
buf.substr(1, 3); // 結果為 "bcd"
字串輸入
使用getline讀入字串可以保留字串中的空格
getline(cin , s1);
使用cin 在遇到空格或回車時停止
cin >> s1;
多字串的輸入,遇到空格代表當前字串賦值完成,轉到下個字串賦值,回車停止
cin >> s2 >> s3;
cctype標頭檔案(判斷字元型別:大/小寫字母、標點、數字等)
isalnum(c) // 當是字母或數字時為真
isalpha(c) // 當是字母時為真
isdigit(c) // 當是數字是為真
islower(c) // 當是小寫字母時為真
isupper(c) // 當是大寫字母時為真
isspace(c) // 當是空白(空格、回車、換行、製表符等)時為真
isxdigit(c) // 當是16進位制數字是為真
ispunct(c) // 當是標點符號時為真(即c不是 控制字元、數字、字母、可列印空白 中的一種)
isprint(c) // 當時可列印字元時為真(即c是空格或具有可見形式)
isgraph(c) // 當不是空格但可列印時為真
iscntrl(c) // 當是控制字元時為真
tolower(c) // 若c是大寫字母,轉換為小寫輸出,否則原樣輸出
搜尋操作
int index = str.find(arg) 找到arg第一次出現的位置
str.rfind() 找到arg最後一次出現的位置
如果沒找到返回 -1
例如:
string buf = "abcdefg";
buf.find("cde"); // 結果為 2
buf.find("ff"); // 結果為 -1
- 找到args中任意一個字元最早\最晚出現的位置
s.find_first_of(args) // 在s中找到args中任意一個字元最早出現的位置
s.find_last_of(args) // 在s中找到args中任意一個字元最晚出現的位置
例如:
string s1 = "nice to meet you~";
cout << s1.find_first_of("mey") << endl; // 輸出結果為 3,'e' 出現的最早
- 在 s 中查詢 第一個/最後一個 不在 args 中的字元的位置
s.find_first_not_of(args) // 查詢 s 中 第一個不在 args 中的字元的位置
s.find_last_not_of(args) // 查詢 s 中 最後一個不在 args 中的字元的位置
例如:
string s1 = "nice to meet you~";
cout << s1.find_first_not_of("nop") << endl; // 輸出結果為 1 ,'i' 不在 "nop" 裡
型別轉換
- 將任意型別轉換為string型別 (val可以是任何算數型別,int、double等)
string s = to_string(val)
- 將string型別轉換為整型(需包含cstdio標頭檔案)
int num1 = stoi(s, p , b) // s表示字串,p是指標,用來儲存s中第一個非數值的下標,預設為0,也可以是空指標
// b是進位制數 ,將字串作為幾進位制的數轉換,最終結果仍然以10進製表示
//(相當於任意進位制轉為10進位制)
還有其他幾種接收型別
int num = stoi(s) // 預設10進位制
long num stol(s, p, b) // 返回long型
unsigned long num stoul(s, p, b) // 返回unsigned long型
long long num stoll(s, p, b) // 返回long long型
unsigned long long num stoll(s, p, b) // 返回unsigned long long型
- 將string型別轉換為浮點數
stof(s) stof(s,p) stod(s,p) stold(s,p) // 分別對應float、double、long double型別
- char型轉數值函式原型 int atoi(const char *_Str) 傳入引數是指標型別,所以要對字元取地址
atoi(c) // int型別
atol(c) // long型別
atoll(c) // long long型別
atof(c) // float型別