首頁  >  文章  >  後端開發  >  C++ 中字串的使用

C++ 中字串的使用

黄舟
黄舟原創
2017-02-06 13:35:041444瀏覽

當我們一開始使用C語言來處理字串的時候,會覺得非常的麻煩。 C語言中缺少對應的字串處理函數,如果想要實作某個字串功能,只能靠我們自己來實現。但是當來到C++中,字串的處理就會變得異常簡單。今天我們就來學習C++中最高頻的字串處理函數。範例程式碼上傳至:https://github.com/chenyufeng1991/CppString。

首先要引入C++中的字串頭檔:

#include <string>


請注意,這裡的頭檔是沒有.h的,否則就成了C語言中的頭檔了。

(1)創建字串


創建字串有好幾種構造方式,最典型的方式就是使用複製構造函數,

string str("chenyufeng",3);  
cout << str << endl;

cout 拷貝原先的字符串開頭處的3個字符最為最新的字串。列印結果為che.

string str2("chenyufeng",2,3);  
cout << str2 << endl;


cout 拷貝原先字串index=2開始處的3個字元最為新的字串。列印結果為eny。

// = :字符串赋值  
str2 = "Robert";  
cout << str2 << endl;


同樣也可以用直接賦值的方式為某個變數賦值字串,使用」=「。列印結果為Robert.


(2)swap:交換兩個字串的值

// swap:交换两个字符串的值  
  string string1 = "chen";  
   string string2 = "yufeng";  
   swap(string1, string2);  
   cout << "string1 = " << string1 << ";string2 = " << string2 << endl;


列印結果就已經和原先的字串的值交換了。


(3)+,append :添加字串

// += ,append:在尾部添加字符串  
   string stringOrigin = "chen";  
    string stringAppend = "yufeng";  
    stringOrigin = stringOrigin + stringAppend;  
    cout << "stringOrigin = " << stringOrigin << endl;  
  
    stringOrigin.append("_OK");  
    cout << "stringOriginAppend = " << stringOrigin << endl;


注意,添加字串操作是會修改原先的字串的。可以直接使用+號進行字串的添加,非常方便。


(4)insert:在指定位置插入字串

// insert:在指定position插入字符串  
  string stringInsertOrigin = "chenyufeng";  
    stringInsertOrigin.insert(3, "__");  
    cout << "stringInsertOrigin = " << stringInsertOrigin << endl;


上述程式碼可以在indx=3位置插入__下劃線,列印結果為che__nyufeng.

上述程式碼可以在indx=3位置插入__下劃線,列印結果為che__nyufeng.

clear刪除字串

// erase: 删除字符 
  string stringEraseOrigin = "chenyufeng";  
   stringEraseOrigin.erase();  
   cout << "stringEraseOrigin = " << stringEraseOrigin << endl;  
  
  
   // clear :删除全部字符  
  string stringClearOrigin = "chenyufeng";  
   stringClearOrigin.clear();  
   cout << "stringClearOrigin = " << stringClearOrigin << endl;

上述操作其實都是把字串清空了。

(6)replace:替換字串

// replace: 替换字符串,某个pos位置开始的size个字符替换成后面的“”字符串  
   string stringReplaceOrigin = "chenyufeng";  
    stringReplaceOrigin.replace(3, 2, "66");  
    cout << "stringReplaceOrigin = " << stringReplaceOrigin << endl;

上述程式碼把字串從index=3開始的2個字元替換成」66「,列印結果為che66ufeng.
7)==,,  =: 比較字串大小


C++中使用這種運算子對字串進行操作,其實都是用了運算子重載。字串比較大小是根據字母的字典序或者說是ASCII碼值依序比較大小。直到比較出兩個字串的不同字母或比較到某個字串的最後一位停止。

// ==,<,>,<=,>=:比较字符串  
  string stringLeft = "zhen";  
   string stringRight = "yufeng";  
   if (stringLeft == stringRight)  
   {  
       cout << "equal" << endl;  
   }  
  
   if (stringLeft != stringRight)  
   {  
       cout << "not equal" << endl;  
   }  
  
   if (stringLeft < stringRight)  
   {  
       cout << "stringLeft < stringRight" << endl;  
   }  
  
   if (stringLeft > stringRight)  
   {  
       cout << "stringLeft > stringRight" << endl;  
   }


(8)size,length:計算字串長度


這裡的計算字串長度和C語言中不同,是不包括末尾的的,計算的是真實的長度。

// size(), length():计算字符串长度  
   string stringCount = "chenyufeng";  
    cout << "stringSize = " << stringCount.size() << endl;  
    cout << "stringLength = " << stringCount.length() << endl;


上述的印刷結果都是10.


(9)empty:判斷字串是否為空

// empty():判断字符串是否为空  
  string stringIsEmpty = "";  
    string stringNotEmpty = "chen";  
    if (stringIsEmpty.empty())  
    {  
        cout << "stringIsEmpty == empty" << endl;  
    }  
    else  
    {  
        cout << "stringIsEmpty != empty" << endl;  
    }  
  
    if (stringNotEmpty.empty())  
    {  
        cout << "stringNotEmpty == empty" << endl;  
    }  
    else  
    {  
        cout << "stringNotEmpty != empty" << endl;  
    }

字串也可以類似C++其他資料型別一樣使用輸入輸出流。可以使用回車鍵結束輸入流。

(11)max_size:字串的最大可容納量。

// 输入输出stream  
  cout << "请输入一个字符串"<<endl;  
    string stringInput;  
    cin >> stringInput;  
    cout << "stringInput = " << stringInput << endl;

列印結果為:18446744073709551599  。表示該字串可以容納這麼多的字元數。

(12)[], at :元素訪問與修改

// max_size:  
  string stringMaxSize;  
    cout << "stringMaxSize = " << stringMaxSize.max_size() << endl;

字串可以和陣列一樣進行操作,使用下標進行存取,並可以進行修改原始字串。

(13)compare:字串的比較,回傳0,1 ,-1。

// [],at() :元素存取  
  string stringAt = "chenyufeng";  
    cout << "stringAt[3] = " <<stringAt[3] << endl;  
    cout << "stringAt.at(3) = " << stringAt.at(3) << endl;  
  
    stringAt[3] = &#39;6&#39;;  
    stringAt.at(5) = &#39;9&#39;;  
    cout << "stringAt = " << stringAt << endl;

(14)substr:取子字串

// compare()  
   string stringCompare = "chenyufeng";  
    int aaa = stringCompare.compare("chen"); // > 0  
    int bbb = stringCompare.compare("chenyufeng"); // == 0  
    int ccc = stringCompare.compare("done"); // < 0  
    cout << "aaa = " << aaa << ";bbb = " << bbb << ";ccc = " << ccc << endl;

(15)find:找出某個字元。 find_first_of和find_last_of則分別是第一次和最後一次出現某個字元的index。

以上就是C++ 中字串的使用的內容,更多相關內容請關注PHP中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn