C++ string型別常用操作

风陵南發表於2024-08-16

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型別

相關文章