测试最有代表性的c++标准的string类


#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s1("happy");
    string s2(" birthday");
    string s3;
    cout << s1 << endl << s2 << endl << s3 << endl;

    cout << "s1 ==  s2:" << (s1 == s2 ? "true" : "false") << endl
        << "s1 !=  s2:" << (s1 != s2 ? "true" : "false") << endl
        << "s1 <  s2:" << (s1 < s2 ? "true" : "false") << endl
        << "s1 >=  s2:" << (s1 >= s2 ? "true" : "false") << endl
        << "s1 <=  s2:" << (s1 <= s2 ? "true" : "false") << endl;

    cout << "test s3.empty():" << endl;

    if (s3.empty())
    {
        cout << "s3 is empty:assigning s1 to s3;" << endl;
        s3 = s1;
        cout << "s3:" << s3 << endl;
    }

    s1 += s2;
    cout << "s1+=s2:" << endl;
    cout << "s1:" << s1 << endl;

    s1 += " to you";
    cout << "s1+= \"to you \"" << endl;
    cout << "s1:" << s1 << endl;

    cout << "substring is 0-14 is :" << s1.substr(0, 14) << endl;

    string s4(s1);
    cout << "test copy string s4(s1) : s4 is " << s4 << endl;

    s4 = s4;
    cout << "test s4=s4 s4:" << s4 << endl;

    s1[0] = 'H';
    s1[6] = 'B';
    cout << "after s1[0] = 'H'; s1[6] = 'B'; s1 is " << s1 << endl;

    try
    {
        cout << "attempt to assign 'd' to s1.at(30) yields:" << endl;
        s1.at(30) = 'd';//error
    }
    catch (out_of_range &ex)
    {
        cout << "an exception occurred:" << ex.what() << endl;
    }


    return 0;
}

重载二元操作符-两种方式

作为成员函数的二元重载运算符

bool operator<(const String &)const;

非成员函数的二元重载运算符

bool operator<(const String&,const String &);
01-26 10:34