日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++中的string类

發布時間:2023/11/30 c/c++ 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++中的string类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

string類

  • string是表示字符串的字符串類
  • 該類的接口與常規容器的接口基本相同,再添加了一些專門用來操作string的常規操作。
  • string在底層實際是:basic_string模板類的別名,typedef basic_string<char, char_traits, allocator> string;
  • 不能操作多字節或者變長字符的序列。在使用string類時,必須包含頭文件以及using namespace std;
  • string類常見構造

    函數名稱 功能說明 string() 構造空的string類對象,即空字符串 string(const char* s) 用C-string來構造string類對象 string(size_t n, char c) string類對象中包含n個字符c string(const string&s) 拷貝構造函數 string(const string&s, size_t n) 用s中的前n個字符構造新的string類對象

    示例

    #include<iostream> #include<string> using namespace std;void test01() {string str;//默認構造string str2(str);//拷貝構造string str3 = str;string str4 = "abcd";string str5(10, 'a');cout << str4 << endl;cout << str5 << endl; }int main() {test01();system("pause");return 0; }


    string類對象的容量操作

    函數名稱 功能說明 size_t size() const 返回字符串有效字符長度 size_t length() const 返回字符串有效字符長度 size_t capacity ( ) const 返回空間總大小 bool empty ( ) const 檢測字符串釋放為空串,是返回true,否則返回false void clear() 清空有效字符 void resize ( size_t n, char c ) 將有效字符的個數該成n個,多出的空間用字符c填充 void resize ( size_t n ) 將有效字符的個數改成n個,多出的空間用0填充 void reserve ( size_t res_arg=0 ) 為字符串預留空間

    string類對象的訪問操作

    函數名稱 功能說明 char& operator[] ( size_t pos ) 返回pos位置的字符,const string類對象調用 const char& operator[] ( size_t pos ) const 返回pos位置的字符,非const string類對象調 用

    string類對象的修改操作

    函數名稱 功能說明 void push_back(char c) 在字符串后尾插字符c string& append (const char* s); 在字符串后追加一個字符串 string& operator+=(const string& str) 在字符串后追加字符串str string& operator+=(const char* s) 在字符串后追加C個數字符串 string& operator+=(char c) 在字符串后追加字符c const char* c_str( )const 返回C格式字符串 size_t ?nd (char c, size_t pos = 0)const 從字符串pos位置開始往后找字符c,返回該字符在 字符串中的位置 size_t r?nd(char c, size_t pos = npos) 從字符串pos位置開始往前找字符c,返回該字符在 字符串中的位置 string substr(size_t pos = 0, size_t n = npos)const 在str中從pos位置開始,截取n個字符,然后將其 返回

    string類非成員函數

    函數 功能說明 operator+ 盡量少用,因為效率低 operator>> 輸入運算符重載 operator<< 輸出運算符重載 getline 獲取一行字符串 relational operators 大小比較


    #include<iostream> #include<string> using namespace std; #include<stdexcept>void test01() {string str;//默認構造string str2(str);//拷貝構造string str3 = str;string str4 = "abcd";string str5(10, 'a');cout << str4 << endl;cout << str5 << endl;//基本賦值str = "hello";str2 = str4;//string &assign(const char *s,int n)//把字符串s的前n個字符賦給當前的字符串str3.assign("abcdef", 4);cout << str3 << endl;//string &assign(const string *s,int start,int n)//將s從start開始n個字符賦值給字符串string str6;str6.assign(str, 1, 3);//ell ? hel 從0索引cout << str6 << endl;}void test02() {string s = "hello world";for (int i = 0; i < s.size(); i++){//cout << s[i] << endl;cout << s.at(i) << endl;}//[]和at區別?[]訪問越界,直接掛掉 at會拋出異常try{//cout << s[100] << endl;cout << s.at(100) << endl;}catch (out_of_range& e){cout << e.what() << endl;}catch (...){cout << "越界異常" << endl;} }void test03() {//拼接string s1 = "我";string s2 = "愛北京";s1+=s2;cout << s1<< endl;s1.append("天安門");cout << s1 << endl;//find查找string s = "abcdefg";int pos = s.find("bcf");//找不到返回-1cout << "pos=" << pos << endl;int pos2 = s.rfind("bc");//rfind和find結果一樣,內部查找方式不一樣cout << "pos2=" << pos2 << endl;//替換string s3 = "hello";s3.replace(1, 3, "1111");//替換從pos開始n個字符為字符串strcout << s3 << endl; //he1111o }void test04() {string s1 = "bbc";string s2 = "abc";if (s1.compare(s2) == 0){cout << "s1等于s2" << endl;}else if (s1.compare(s2)==1){cout << "s1大于s2" << endl;}else{cout << "s1小于s2" << endl;} }void test05() {string s1 = "abcde";string s2 = s1.substr(1, 3);cout <<"s2="<< s2 << endl;//需求,查找一個郵件的用戶名string email = "zhangtao@sina.com";int pos=email.find("@");//cout << "pos" << pos << endl;string userName = email.substr(0, pos);cout << "用戶名" << userName << endl;}void test06() {string s1 = "hello";s1.insert(1, "111");cout << s1 << endl;//h111ello//刪除111s1.erase(1, 3);cout << s1 << endl; }/* string和c-style字符串轉換 */void func(string s) {cout << s << endl; }void func2(char *s) {cout << s << endl; } void test07() {string s = "abc";//string->char *const char *p = s.c_str();func(p);//const char *隱式類型轉換為string//const char *->string string s2(p);//func2(s2);//string 不能隱式類型轉換成char *} void test08() {string s = "abcdefg";char &a = s[2];char &b = s[3];a = '1';b = '2';cout << s << endl;cout << (int *)s.c_str() << endl;s = "pppppppppppppppp";/*a='1';b = '2';*/cout << s << endl;cout << (int *)s.c_str() << endl; }/* 寫一個函數,函數內部string字符串中的所有小寫字母都變成大寫字母*/ void test09() {string s = "abCdEfg";for (int i = 0; i < s.size(); i++){//s[i] = toupper(s[i]); //全變小寫s[i] = tolower(s[i]);}cout << s << endl;}int main() {//test01();//test02();//test03();///test04();//test05();///test06();//test07();//test08();test09();system("pause");return 0; }

    總結

    以上是生活随笔為你收集整理的c++中的string类的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产一区二区三区免费观看 | 国产九色在线 | 欧洲精品久久一区二区 | 免费的一级片 | 亚洲欧美自拍一区 | 欧美国产成人在线 | 日韩成人高清视频在线观看 | av资源网址| 欧美人吸奶水吃奶水 | 午夜免费看片 | www.777奇米影视 | 亚洲欧美综合在线观看 | 免费色视频 | 第四色在线视频 | 国产一区二区在线视频 | 亚洲天堂欧美在线 | 国产女大学生av | 日韩视频一区二区三区四区 | 亚洲精品国产美女 | 四虎在线免费播放 | 成人中文在线 | 国产成年人 | 黄色小视频在线播放 | 欧美视频网站 | 99久久久久久久久久 | 激情五月视频 | 鬼灭之刃柱训练篇在线观看 | 歪歪视频在线观看 | 91视频在线免费观看 | 欧美综合视频在线观看 | 樱花影院电视剧免费 | 一级片自拍 | 国产精品久久久久久久久免费相片 | 亚洲福利影视 | 国产伦精品一区二区. | 国产成人精品综合久久久久99 | 国产日韩欧美综合在线 | 国产超碰在线观看 | 一级aa毛片 | 91好色先生 | 假日游船法国满天星 | av在线播放一区二区三区 | 看一级黄色大片 | 熟女俱乐部五十路六十路av | av在线资源观看 | 亚洲天堂影院在线观看 | 一区二区三区久久 | 亚洲综合免费视频 | 免费人成视频在线播放 | av官网在线观看 | 一区二区三区av | 激情高潮呻吟抽搐喷水 | 第一福利视频 | 日韩亚洲在线 | 久久精品无码人妻 | 偷拍中国夫妇高潮视频 | 中国字幕一色哟哟 | 成人尹人 | 午夜资源网 | japanese国产打屁股网站 | 欧美老熟妇一区二区 | 国产在线免费av | 91成人免费看 | 91精品国产综合久久精品图片 | 日韩激情免费 | 亚色在线观看 | 久久午夜国产精品 | 男人的天堂视频 | 久草资源在线观看 | 欧美综合影院 | 日韩精品免费视频 | 综合精品在线 | 久久影视大全 | 岳乳丰满一区二区三区 | 亚洲黄网在线观看 | 高潮一区二区三区乱码 | 成人免费网站在线 | 欧美一区二区三区精品 | 日本特黄一级 | 日韩欧美一区二区三区四区 | 欧美日韩二三区 | 91插插插插插| 欧美激情视频一区二区三区不卡 | 日韩视频在线观看二区 | 手机在线成人av | av一区二区三 | 欧美 亚洲 另类 偷偷 自拍 | 大肉大捧一进一出好爽视频动漫 | 少妇特殊按摩高潮惨叫无码 | 日本大尺度吃奶做爰久久久绯色 | 日韩日日日| 国产淫| 息与子五十路翔田千里 | 奇米成人影视 | 国产高潮又爽又无遮挡又免费 | 91在线| av一片| 日日躁夜夜躁狠狠躁 | 激情av网|