C++のString類
- 2019 年 12 月 27 日
- 筆記
題圖:NoCopy
字數:1191 | 2分鐘讀完我1小時的思考
今天的文章沒有按時發佈(原定早上7:00),跟大家說個抱歉,由於昨天晚上下班回到家就開始忙着建我們的網站(後續很多學習資源將會同步上去),一忙起來就忽略了時間,然後寫到晚上1點多沒寫完,本以為早上6點起來繼續寫能寫完,但是「低風險創業」這個話題內容比較多所以沒來得及發佈,還請各位海涵,後續我會分配好任務時間,避免再出現這樣的失誤!
上一篇文章(C++の命名空間namespace)我們介紹了C++中的命名空間的用法,接下來我們介紹第二個話題String類。
2、String類
我覺得String這個沒什麼好說的,但是在C++中用的比較多,所以還是簡單過一下吧。
1、C++中的string不同於C中的string
C語言中沒有字符串的概念,實際上是字符數組,但是C中有個頭文件"string.h",提供了字符數串拼接、拷貝、比較等函數接口。而C++中string是字符串類,在使用時需要包含string頭文件,由於string是std命名空間下的類,所以也需要引入std命名空間,下面是示例代碼:
#include <string> using std::string;
2、C++中string對象的定義與初始化
C++中string類提供了多種方式初始化一個字符串對象:
string str1; //默認的初始化,str1是一個空字符串 string str2(str1); //使用拷貝構造函數利用已知字符串初始化 string str21 = str1; string str2 = ("Hello World!"); string str3("HelloWorld");
3、C++ string 對象的操作符(以字符串s為例)
os << s //將s寫到輸出流os中 is >> s //將輸入流寫到s中 getline(is, s) //從is中讀取一行到s中 s.empty() //判斷字符串s是否空 s.size() //獲取字符串s的大小 s1 == s2 //比較字符串s1是否等於字符串s2 s1 + s2 //將字符串s1和s2拼接成一個新額字符串
從命令行讀取輸入,存到字符串:
#include <iostream> int main() { std::string line; while (getline(cin, line)) if (line.size() > 1024) cout << line << endl; return 0; }
4、C++ string 中字符的處理方法
C++中string是一個類,能夠創建字符串對象,而字符串是由一個個字符組成,那麼有沒有操作字符的方式呢?
當然有!我們可以判斷字符串中是否有空格,也可以改變字符串中字符的大小寫等。
這些操作都定義在頭文件"cctype"中
下面簡單羅列幾個cctype中定義的一些string中操作字符串的方法:
isalnum(c) //判斷字符c是否是字母或數字 isalpha(c) //判斷字符c是否是一個字母 iscntrl(c) //判斷c是否是一個控制字符 isdigit(c) //判斷c是否是一個數字 isspace(c) //判斷c是否是一個空格 等價於 c == '
注意這裡的"cctype"就是C++中使用C標準的頭文件的寫法,等價於"ctype.h"
除此之外,我們也可以使用範圍for對字符串中的字符進行遍歷。
比如:
//遍歷字符串,將所有字符轉為大寫字母 #include <iostream> #include <cctype> int main() { std::string str("Hello World!"); for (auto &c : str) c = toupper(c); return 0; }
好了, string類就寫到這裡,如果你對這篇文章有什麼疑問,歡迎評論區留言
下篇文章我們學一下vector這個C++中常用的類,vector也是本系列文章講到的第一個容器類,和模板類。