C++中的字符串类
1 C++中的字符串類簡(jiǎn)介
1.1 C語言中的遺留問題
歷史遺留問題:
- C語言不支持真正意義上的字符串。
- C語言用字符數(shù)組和一組函數(shù)實(shí)現(xiàn)字符串操作。
- C語言不支持自定義類型,因此無法獲得字符串類型。
解決方案:
- 從C到C++的進(jìn)化過程中引入了自定義類型。
- 在C++中可以通過類完成字符串類型的定義。
1.2 C++中的字符串類
由于C++語言直接支持C語言的所有概念,所以C++中沒有原生的字符串概念。
標(biāo)準(zhǔn)庫中的字符串類:
- C++標(biāo)準(zhǔn)庫提供了string類型
- string直接支持字符串連接
- string直接支持字符串大小的比較
- string直接支持字串查找和提取
- string直接支持字符串的插入和替換
string類最大限度的考慮了C字符串的兼容性,可以按照使用C字符串的方式使用string對(duì)象。
字符串類的使用:
#include <iostream> #include <string>using namespace std;void string_sort(string a[], int len) {for(int i=0; i<len; i++){for(int j=i; j<len; j++){if( a[i] > a[j] ){swap(a[i], a[j]);}}} }string string_add(string a[], int len) {string ret = "";for(int i=0; i<len; i++){ret += a[i] + "; ";}return ret; }int main() {string sa[7] = {"Hello World","D.T.Software","C#","Java","C++","Python","TypeScript"};string_sort(sa, 7);for(int i=0; i<7; i++){cout << sa[i] << endl;}cout << endl;cout << string_add(sa, 7) << endl;return 0; }2 C++中string類錯(cuò)誤使用示例
C++中要么用string類,要么用C語言方式的字符串,不要混用,否則很容易出bug。
2.1 m_cstr的問題
下面的代碼輸出什么?為什么?
兩次均輸出"12345"。
問題分析:
string類通過一個(gè)數(shù)據(jù)空間保存字符數(shù)據(jù)。
2.2 m_length的問題
下面的程序輸出什么?為什么?
輸出為空。
問題分析:
string類通過一個(gè)成員變量保存當(dāng)前字符串的長(zhǎng)度。
C++開發(fā)時(shí)盡量避免C語言中管用的變成思想。
參考資料:
總結(jié)
- 上一篇: 90年代幸福125摩托车与本田关系
- 下一篇: 48v40ah锂电池用多大的充电器?