溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C++教程:字符串的使用

發(fā)布時(shí)間:2020-07-05 14:36:22 來源:網(wǎng)絡(luò) 閱讀:335 作者:IT大贏家 欄目:編程語言

  我們才開始接觸用C語言來處理字符串的時(shí)候,肯定會(huì)覺得怎么會(huì)如此麻煩呢?今天,小編就給大家總結(jié)出這方面的一些知識(shí),C++中最高頻的字符串處理函數(shù)。

  首先要引入C++中的字符串頭文件:

  #include

  請(qǐng)注意,這里的頭文件是沒有.h的,否則就成了C語言中的頭文件了。

  (1)創(chuàng)建字符串

  創(chuàng)建字符串有好幾種構(gòu)造方式,最典型的方式就是使用復(fù)制構(gòu)造函數(shù),

  string str("chenyufeng",3);

  cout << str << endl;

  cout 拷貝原先的字符串開頭處的3個(gè)字符最為最新的字符串。打印結(jié)果為che.

  string str2("chenyufeng",2,3);

  cout << str2 << endl;

  cout 拷貝原先字符串index=2開始處的3個(gè)字符最為新的字符串。打印結(jié)果為eny。

  // = :字符串賦值

  str2 = "Robert";

  cout << str2 << endl;

  同樣也可以用直接賦值的方式為某個(gè)變量賦值字符串,使用”=“。打印結(jié)果為Robert.

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

  // swap:交換兩個(gè)字符串的值

  string string1 = "chen";

  string string2 = "yufeng";

  swap(string1, string2);

  cout << "string1 = " << string1 << ";string2 = " << string2 << endl;

  打印結(jié)果就已經(jīng)和原先的字符串的值交換了。

  (3)+,append :添加字符串

  // += ,append:在尾部添加字符串

  string stringOrigin = "chen";

  string stringAppend = "yufeng";

  stringOrigin = stringOrigin + stringAppend;

  cout << "stringOrigin = " << stringOrigin << endl;

  stringOrigin.append("_OK");

  cout << "stringOriginAppend = " << stringOrigin << endl;

  注意,添加字符串操作是會(huì)修改原先的字符串的。可以直接使用+號(hào)進(jìn)行字符串的添加,非常方便。

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

  // insert:在指定position插入字符串

  string stringInsertOrigin = "chenyufeng";

  stringInsertOrigin.insert(3, "__");

  cout << "stringInsertOrigin = " << stringInsertOrigin << endl;

  上述代碼可以在indx=3位置插入__下劃線,打印結(jié)果為 che__nyufeng.

  (5)erase,clear刪除字符串

  // erase: 刪除字符

  string stringEraseOrigin = "chenyufeng";

  stringEraseOrigin.erase();

  cout << "stringEraseOrigin = " << stringEraseOrigin << endl;

  // clear :刪除全部字符

  string stringClearOrigin = "chenyufeng";

  stringClearOrigin.clear();

  cout << "stringClearOrigin = " << stringClearOrigin << endl;

  上述操作其實(shí)都是把字符串清空了。

  (6)replace:替換字符串

  // replace: 替換字符串,某個(gè)pos位置開始的size個(gè)字符替換成后面的“”字符串

  string stringReplaceOrigin = "chenyufeng";

  stringReplaceOrigin.replace(3, 2, "66");

  cout << "stringReplaceOrigin = " << stringReplaceOrigin << endl;

  上述代碼把字符串從index=3開始的2個(gè)字符替換成”66“,打印結(jié)果為che66ufeng.

  (7)==,, =: 比較字符串大小

  C++中使用這種運(yùn)算符對(duì)字符串進(jìn)行操作,其實(shí)都是用了運(yùn)算符重載。字符串比較大小是根據(jù)字母的字典序或者說是ASCII碼值按順序比較大小。直到比較出兩個(gè)字符串的不同字母或者比較到某個(gè)字符串的最后一位停止。

  // ==,<,>,<=,>=:比較字符串

  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:計(jì)算字符串長(zhǎng)度

  這里的計(jì)算字符串長(zhǎng)度和C語言中不同,是不包括末尾的的,計(jì)算的是真實(shí)的長(zhǎng)度。

  // size(), length():計(jì)算字符串長(zhǎng)度

  string stringCount = "chenyufeng";

  cout << "stringSize = " << stringCount.size() << endl;

  cout << "stringLength = " << stringCount.length() << endl;

  上述的打印結(jié)果都是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;

  }

  (10)字符串的輸入輸出流

  // 輸入輸出stream

  cout << "請(qǐng)輸入一個(gè)字符串"<

  string stringInput;

  cin >> stringInput;

  cout << "stringInput = " << stringInput << endl;

  字符串也可以類似于C++其他數(shù)據(jù)類型一樣使用輸入輸出流。可以使用回車鍵結(jié)束輸入流。

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

  // max_size:

  string stringMaxSize;

  cout << "stringMaxSize = " << stringMaxSize.max_size() << endl;

  打印結(jié)果為:18446744073709551599 。表示該字符串可以容納這么多的字符數(shù)。

  (12)[], at :元素存取與修改

  // [],at() :元素存取

  string stringAt = "chenyufeng";

  cout << "stringAt[3] = " <

  cout << "stringAt.at(3) = " << stringAt.at(3) << endl;

  stringAt[3] = '6';

  stringAt.at(5) = '9';

  cout << "stringAt = " << stringAt << endl;

  字符串可以和數(shù)組一樣進(jìn)行操作,使用下標(biāo)進(jìn)行存取,并可以進(jìn)行修改原字符串。

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

  // 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;

  (14)substr:取子字符串

  // substr

  string stringSubstr = "chenyufeng";

  // 從索引為4開始的3個(gè)字符

  cout << "stringSubstr.substr(4,3) = " << stringSubstr.substr(4,3) << endl;

  // 從索引為4開始的所有字符

  cout << "stringSubstr.substr(4) = " <

  // 整個(gè)字符

  cout << "stringSubstr.substr() = " <

  (15)find:查找某個(gè)字符

  // find

  string stringFind = "chenyufeng";

  stringFind.find('n');

  cout << "stringFind.find('n') = " << stringFind.find('n') << endl;

  cout << "stringFind.find_first_of('e') = " << stringFind.find_first_of('e') << endl;

  cout << "stringFind.find_last_of('e') = " << stringFind.find_last_of('e') << endl;

  默認(rèn)find函數(shù)是返回某個(gè)字符第一次出現(xiàn)的下標(biāo)index。find_first_of和find_last_of則分別是第一次和最后一次出現(xiàn)某個(gè)字符的index。

  上述15個(gè)C++中的字符串處理函數(shù)是最為常見的,當(dāng)然其他還有不少,我會(huì)在在后續(xù)的使用中繼續(xù)補(bǔ)充。string其實(shí)也是STL中的一部分。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI