C++字符串类

Constructing a String (创建string对象)

  • Create an empty string using string’s no-arg constructor (用无参构造函数创建一个空字串)

    string newString;//

  • Create a string object from a string value or from an array of characters(由一个字符串常量或字符串数组创建string对象):

 
string s1("Welcome");
s1.append(" to C++"); //appends "to C++" to s1
cout << s1 << endl;  //s1 now becomes Welcome to C++

string s2("Welcome");
s2.append(" to C and C++",3,2);//appends "C" to s2
cout << s2 << endl;     //s2 now becomes Welcome C

string s3("Welcome");  //appends " to C" to s3
s3.append(" to C and C++",5); //s3 now becomes Welcome to C
cout << s3 << endl;

string s4("Welcome"); 
s4.append(4,'G');   // appends "GGGG" to s4
cout << s4 << endl; // s4 now becomes WelcomeGGGG

【Assigning a String(为字符串赋值)】【assign】
You can use several overload functions to assign new contents to a string

string s1("Welcome");
s1.assign("Dallas"); // assigns "Dallas" to s1
cout << s1 << endl;  // s1 now becomes Dallas

string s2 ("Welcome");
s2.assign("Dallas,Texas",1,3); //assign "all" to s2
cout << s2 << endl; //s2 now become all

string s3("Welcome");
s3.assign("Dallas,Texas",6); // assigns "Dallas" to s3
cout << s3 << endl; //s3 now become Dallas

string s4("Welcome");
s4.assign(4,'G'); //assigns "GGGG" to s4
cout << s4 << endl; //s4 now becomes GGGG

【Functions at,clear,erase,and empty】

  • at(index) : 返回当前字符串中index位置的字符
  • clear( ): 清空字符串
  • erase(index,n);删除字符串从index开始的n个字符
  • empty( ):检测字符串是否为空
string s1("Welcome");
cout << s1.at(3) << endl; // s1.at(3) return c
cout << s1.erase(2,3) << endl; //s1 is now Weme
s1.clear(); // s1 is now empty
cout << s1.empty() << endl; // s1.empty returns 1(means true)
                            //不特别指定的话不会输出bool值,而是输出1!!!

【Comparing Strings(比较字符串)】【compare】

string s1("Welcome");
string s2("Welcomg");

cout << s1.compare(s2) << endl;         //s1-s2 return -2
cout << s2.compare(s1) << endl;         //return 2
cout << s1.compare("Welcome") << endl;  // return 0

【Obtaining Substrings(获取子串)】
【at( )函数用于获取一个单独的字符;而substr( )函数则可以获取一个子串】

string s1("Welcome");
cout << s1.substr(0,1) << endl; //return W; 从0号位置开始的1位字符
cout << s1.substr(3) << endl;   //return come 从3号位置开始直到结尾
cout << s1.substr(3,3) << endl; //return com 从3号位置开始的3个字符

【Searching in a String(搜索字符串)】
【find( )函数可以从一个字符串中搜索一个子串或者一个字符】

string s1("Welcome to HTML");
cout << s1.find("co") << endl;  //returns 3; 返回子串出现的第一个位置
cout << s1.find("co".6) << endl; //returns -1 (-1表示不存在)
                                 //从6号位置开始查找子串出现的第一个位置
cout << s1.find('o') << endl; // returns 4 返回字符出现的第一个位置
cout << s1.find('o',6) << endl; //returns 9 从6号位置开始查找字符出现的第一个位置

【Inserting and Replacing Strings(插入和替换字符串)】
【insert( ):将某个字符/字符串插入到当前字符串的某个位置】
【replace( ):将本字符串从某个位置开始的一些字符替换为其他内容】

string s1("Welcome to HTML");//W e l c o m e _ t o _  H  T  M  L \0
                             //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
s1.insert(11,"C++ and ");
cout << s1 << endl; //s1 becomes Welcome to C++ and HTML

string s2("AA");
s2.insert(1,4,'B'); //在一号位置处连续插入4个相同字符
cout << s2 << endl; //s2 becomes to ABBBBA

string s3("Welcome to HTML");
s3.replace(11,4,"C++"); //从11号位置开始向后的4个字符替换掉,注意'\0'
cout << s3 << endl;     //returns Welcome to C++

【字符串的运算符 String Operators】
Operator Description

[]                          //用数组下标运算符访问字符串中的字符
=                           //将一个字符串的内容复制到另一个字符串
+                           //连续两个字符串得到一个新串
+=                          //将一个字符串追加到另一个字符串末尾
<<                          //讲一个字符串插入一个流
>>                          //从一个流提取一个字符串,分解符为空格或者空结束符
==,!=,<                     //用于字符串比较(前一个ASCⅡ减后一个)
<=,>,>=

string s1 = "ABC";            // The = operator
string s2 = s1;               // The = operator
for(int i = s2.size() - 1;i >= 0;i--)
    cout << s2[i];            // The [] operator

string s3 = s1 + "DEFG";      // The + operator
cout << s3 << endl;           //s3 becomes ABCDEFG

s1+= "ABC";                   
cout << s1 << endl;           //s1 becomes ABCABC

s1 = "ABC";
s2 = "ABE";
cout << (s1 == s2) << endl;   //Diaplays 0
cout << (s1 != s2) << endl;   //Displays 1
cout << (s1  > s2) << endl;   //Displays 0 
cout << (s1 >= s2) << endl;   //Displays 0
cout << (s1  < s2) << endl;   //Dispalys 1
cout << (s1 <= s2) << endl;   //Dispalys 1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自己实现的字符串 class CMStringImp; class CMstring { public: explicit CMstring(void); ~CMstring(void); CMstring(LPCTSTR lpszstr); CMstring(const CMstring& lpszstr); CMstring& operator = (const CMstring& lpszstr); operator LPCTSTR() const; bool operator == (const CMstring&) const; bool operator != (const CMstring&) const; bool operator < (const CMstring&) const; TCHAR operator[] (int nIndex) const; TCHAR& operator[] (int nIndex); CMstring& operator += (LPCTSTR pStr); CMstring& operator += (TCHAR ch); friend CMstring operator+(const CMstring& str1, const CMstring& str2); friend CMstring operator+(const CMstring& str1, LPCTSTR lpszstr); friend CMstring operator+(const CMstring& str1, TCHAR ch); friend CMstring operator+(TCHAR ch, const CMstring& str1); friend CMstring operator+(LPCTSTR lpszstr, const CMstring& str1); // friend wostream operator <<(wostream &is;,const CMstring &str;); public: LPCTSTR GetData() const; bool IsEmpty() const; TCHAR GetAt(int) const; TCHAR& GetAt(int); int GetLength() const; int Compare(const CMstring&) const; int CompareNoCase(const CMstring&) const; int Find(TCHAR ch, int nStart = 0) const; int Find(LPCTSTR pStr, int nStart = 0) const; int ReverseFind(TCHAR ch) const; int ReverseFind(LPCTSTR pStr) const; CMstring Right(int nCount) const; CMstring Left(int nCount ) const; public: CMstring& MakeLower(); CMstring& MakeUpper(); CMstring& MakeReverse(); int Replace(TCHAR chOld, TCHAR chNew); int Replace(LPCTSTR pszOld, LPCTSTR pszNew); int Insert(int iIndex, TCHAR ch); void Format(LPCTSTR lpszFormat, ...); private: CMStringImp* m_pImp; };

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值