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也是本系列文章講到的第一個容器類,和模板類。