成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++字符串類型基本概念概述

開發 后端
C++字符串類型包含種類繁多,要想全部掌握這些知識并不是很容易。我們在這將會全方位為大家介紹這方面的知識,以方便大家理解。

C++編程語言中的字符操作時一個比較基礎而且重要的應用技術。我們在這篇文章中將會為大家詳細講解一下有關C++字符串類型的基本概念,相信通過本文的解讀,大家應該可以充分掌握這方面的知識。

要使用C++字符串類型中的string 類型必須先包含相關的頭文件

  1. #include <string> 

例如下面是上一小節定義的字符數組

  1. #include <string> 
  2. string st( "The expense of spirit\n" ); 

st 的長度由size()操作返回不包含終止空字符

  1. cout << "The size of "<< st<< " is " << st.size()<< 
    " characters, including the newline\n"; 

string 構造函數的第二種形式定義了一個空字符串,例如

  1. string st2; // 空字符串 

我們怎樣能保證它是空的當然一種辦法是測試size()是否為0

  1. if ( ! st.size() )  
  2. // ok: 空 

更直接的辦法是使用empty()操作

  1. if ( st.empty() )  
  2. // ok: 空 

如果C++字符串類型中不含有字符則empty()返回布爾常量true ,否則返回false。第三種形式的構造函數用一個string 對象來初始化另一個string 對象,例如

  1. string st3( st ); 

將st3 初始化成st 的一個拷貝,怎樣驗證呢?等于操作符比較兩個string 對象,如果相等則返回true

  1. if ( st == st3 )  
  2. // 初始化成功 

怎樣拷貝一個字符串呢?最簡單的辦法是使用賦值操作符,例如

  1. st2 = st3; // 把st3 拷貝到st2 中 

首先將與st2 相關聯的字符存儲區釋放掉,然后再分配足夠存儲與st3 相關聯的字符的存儲區。***將與st3 相關聯的字符拷貝到該存儲區中。我們可以使用加操作符+ 或看起來有點怪異的復合賦值操作符+= 。將兩個或多個字符串連接起來。例如:給出兩個字符串

  1. string s1( "hello, " );  
  2. string s2( "world\n" ); 

我們可以按如下方式將兩個字符串連接起來,形成第三個字符串

  1. string s3 = s1 + s2; 

如果希望直接將s2 附加在s1 后面那么可使用+= 操作符

  1. s1 += s2; 

s1 和s2 的初始化包含了一個空格一個逗號以及一個換行,這多少有些不方便,它們的存在限制了對這些string 對象的重用,盡管它滿足了眼前的需要。一種替代做法就是混合
使用C 風格的字符串與string 對象。如下所示:

  1. const char *pc = ", ";  
  2. string s1( "hello" );  
  3. string s2( "world" );  
  4. string s3 = s1 + pc + s2 + "\n"; 

這種連接策略比較受歡迎,因為它使s1 和s2 處于一種更容易被重用的形式。這種方法能夠生效是由于string 類型能夠自動將C 風格的字符串轉換成string 對象。例如:這使我們
可以將一個C 風格的字符串賦給一個string 對象。

  1. string s1;  
  2. const char *pc = "a character array";  
  3. s1 = pc; // ok 

但是反向的轉換不能自動執行,對隱式地將string 對象轉換成C 風格的字符串。string類型沒有提供支持,例如,

下面試圖用s1 初始化str。 就會在編譯時刻失敗

  1. char *str = s1; // 編譯時刻類型錯誤 

為實現這種轉換必須顯式地調用名為c_str()的操作

  1. char *str = s1.c_str(); // 幾乎是正確的但是還差一點 

名字c_str()代表了C++字符串類型中的string 類型與C 風格字符串兩種表示法之間的關系。字面意思是給我一個C 風格的字符串,表示——即指向字符數組起始處的字符指針。但是這個初始化還是失敗了,這次是由于另外一個不同的原因,為了防止字符數組被程序直接處理,c_str()返回了一個指向常量數組的指針(下一節將解釋常量修飾符const)

const char*

str 被定義為非常量指針所以這個賦值被標記為類型違例,正確的初始化如下

  1. const char *str = s1.c_str(); // ok 

string 類型支持通過下標操作符訪問單個字符,例如在下面的代碼段中,字符串中的所有句號被下劃線代替

  1. string str( "fa.disney.com" );  
  2. int size = str.size();  
  3. for ( int ix = 0; ix < size; ++ix )  
  4. if ( str[ ix ] == '.' )  
  5. str[ ix ] = '_'; 

以上就是對C++字符串類型的相關介紹。

【編輯推薦】

  1. C++中C風格字符串基本概念介紹
  2. C++調用python腳本函數基本應用指南
  3. C++動態創建對象應用技術講解
  4. 各種常用C++類庫概覽
  5. C++顯式轉換中幾種不同的轉換方式
責任編輯:曹凱 來源: 博客園
相關推薦

2010-02-04 17:32:43

C++中C風格字符串

2010-02-04 13:56:24

C++類模板特化

2010-02-03 11:11:18

C++類型轉換

2010-02-06 15:58:10

C++集合初始化

2010-02-05 09:57:25

C++中英文字符串

2010-02-03 13:22:07

C++時間

2010-02-05 12:57:20

C++ kdevelo

2010-02-02 10:33:22

C++引用

2010-02-01 17:24:41

C++循環語句

2010-02-03 14:36:47

C++仿函數

2010-02-02 13:41:01

C++類繼承

2010-02-02 15:30:05

C++ include

2010-02-01 14:07:12

C++多態性

2010-02-05 17:34:37

C++函數模板

2010-02-06 14:04:58

C++內存使用機制

2010-02-04 10:08:00

C++靜態成員函數

2009-09-04 10:26:09

Java和C#字符串類

2010-02-04 14:01:43

C++非類型類模板參數

2010-03-01 14:50:30

WCF行為類型

2009-08-07 14:22:56

C#字符串搜索
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲免费影院 | 日本视频免费 | 爽爽免费视频 | 日韩伦理电影免费在线观看 | 欧美日韩三级在线观看 | 中文字幕一区二区三区乱码在线 | 国产日韩一区二区 | 玖玖精品 | 日韩欧美二区 | 欧美日韩黄色一级片 | 国产成人在线观看免费 | 三级成人在线观看 | 久久国内精品 | 中文字幕免费在线 | 蜜桃日韩 | 亚洲国产成人av好男人在线观看 | 国产中文字幕在线 | 欧美黄视频| 久草精品视频 | 999久久久久久久久6666 | 久久久久久久久久久久久久av | 亚洲免费在线观看 | 久久久国产精品 | 黄色免费三级 | 日韩在线视频免费观看 | 啪啪精品 | 亚洲一区二区国产 | 高清欧美性猛交xxxx黑人猛交 | 欧日韩在线观看 | 国产精品久久777777 | 亚洲视频在线观看免费 | 尤物在线视频 | 婷婷精品| 亚洲最大看片网站 | 国产亚洲一区二区三区在线 | 久综合 | 亚洲精品久久视频 | 色资源在线观看 | 日本三级日产三级国产三级 | 91免费电影| 欧美aaa级|