C++ за 21 день седьмое издание


string strSTLString ("Hello String")



Download 1,38 Mb.
bet280/437
Sana22.02.2022
Hajmi1,38 Mb.
#89455
TuriРеферат
1   ...   276   277   278   279   280   281   282   283   ...   437
Bog'liq
word1

string strSTLString ("Hello String");


  • // Доступ к содержимому строки с использованием




          1. синтаксиса массива




        1. cout«"Displaying the elements in the string using array-syntax:"




            1. endl;




        1. for ( size_t nCharCounter = 0




    1. ;nCharCounter < strSTLString.length ()




    1. ;++ nCharCounter )




    1. {




    1. cout « "Character [" « nCharCounter « "] is: ";




    1. cout « strSTLString [nCharCounter] « endl;

  • 394 ЗАНЯТИЕ 16. Классы строк библиотеки STL



    1. }




    1. cout « endl;



    2 0 :

    1. // Доступ к содержимому строки с использованием итератора




    1. cout « "Displaying the contents of the string using iterators: "




        1. endl;




      1. int charOffset = 0;




      1. string::const_iterator iCharacterLocator;




    1. for ( iCharacterLocator = strSTLString.begin ()




    1. ; iCharacterLocator !- strSTLString.end ()




    1. ; ++ iCharacterLocator )




    1. {




    1. cout « "Character [" « charOffset ++ « "] is: ";




    1. cout « ^iCharacterLocator « endl;




    1. }




    1. cout « endl;



    33:



    1. // Обращение к содержимому строки в стиле С




    1. cout « "The char* representation of the string is: ";




    1. cout « strSTLString.c_str () « endl;



    37:



    1. return 0;




    1. }



    Результат


    Displaying the elements in the string using array-syntax:


    Character [0] is: H


    Character [1] is: e


    Character [2] is: 1


    Character [3] is: 1


    Character [4] is: 0


    Character [5] is:


    Character [6] is: S


    Character [7] is: t


    Character [8] is: r


    Character [9] is: i


    Character [10] is:: n


    Character [11] is: g


    Displaying the contents of the string using iterators:

    Character

    [0]

    is: H

    Character

    [1]

    is: e

    Character

    [2]

    is: 1

    Character

    [3]

    is: 1

    Character

    [4]

    is: 0

    Character

    [5]

    is:

    Character

    [6]

    is: S

    Character

    [7]

    is: t

    Character

    [8]

    is: r

    Character

    [9]

    is: i

    Character

    [10]

    is: n

    Character

    [11]

    is: g

    The char*

    representation of the string is: Hello String

    Работа с классами строк библиотеки STL

    395



    Анализ

    Код отображает несколько способов обращения к содержимому строки. Итераторы важны в том смысле, что большинство функций-членов класса s t r i n g возвращают свои результаты в форме итераторов. Строки 12-18 отображают символы строки с использова­ нием реализованного классом s t d : : s t r i n g оператора индексирования [ ], как у массива. Обратите внимание, что этому оператору нужно предоставить смещение, как можно за­ метить в строке 17. Поэтому очень важно не пересечь границы строки, т.е. вы не должны читать символы по смещению больше длины строки. Строки 25-31 также отображают содержимое посимвольной строки, но с использованием итератора.


    Конкатенация строк

    Конкатенация строк может быть осущ ествлена либо при помощи оператора +=, либо функции-члена a p p e n d ():


    string strSamplel ("Hello");


    string strSample2 (" String!");


    strSamplel += strSample2; // использование std::string::operator+=



    1. альтернативно используется std::string::append() strSamplel.append (strSample2); // (перегружен также для char*)

    Листинг 16.3 демонстрирует применение этих двух вариантов.


    Л И СТИ Н Г 1 6 .3 . Конкатенация строк с использованием оператора


    сложения с присвоением (+=) или метода append ()____________________________________





    1. #include




    1. #include



    2 :

        1. int main ()




        1. {




        1. using namespace std;



    6 :

        1. string strSamplel ("Hello");




        1. string strSample2 (" String!");








        1. // Конкатенация




        1. strSamplel += strSample2;




        1. cout « strSamplel « endl « endl;








        1. string strSample3 (" Fun is not needing to use pointers!");




      1. strSamplel.append (strSample3);




      1. cout « strSamplel « endl « endl;



    17:



    1. const char* constCStyleString = " You however still can!";




    1. strSamplel.append (constCStyleString);



    20: cout « strSamplel « endl;
    2 1 :


    2 2 : return 0;


    23: }

    396 ЗАНЯТИЕ 16. Классы строк библиотеки STL




    Результат


    Hello String!


    Hello String! Fun is not needing to use pointers!


    Hello String! Fun is not needing to use pointers! You however still can!


    Анализ

    Строки 11, 15 и 19 отображают различные способы конкатенации строк STL. Обратите внимание на использование оператора += и возможность функции ap p e n d (), у которой есть множество перегруженных версий, получать другие строковые объекты (как показано в строке 11) и символьные строки в стиле С.




    Поиск символа или подстроки в строке

    Класс s t r i n g библиотеки STL предоставляет функцию -член f i n d () в нескольких перегруженных версиях. Она позволяет найти символ или подстроку в данном объекте класса s t r i n g .





    1. Найти подстроку "day" в строке strSample, начиная с позиции О size_t charPos = strSample.find ("day", 0);

    2. Удостовериться, что подстрока найдена, сравнив со string::npos if (charPos != string::npos)



    cout « "First instance of \"day\" was found at position "



    1. charPos;



    else


    cout « "Substring not found." « endl;

    Листинг 16.4 демонстрирует удобство метода s t d : : s t r i n g : : f i n d ().




    ЛИСТИНГ 16.4, Использование метода string: :find() для поиска подстроки или символа



    1. #include




    1. #include



    2 :



    1. int main ()




    1. {




    1. using namespace std;



    6 :

    1. string strSample ("Good day String! Today is beautiful!");




    8:

    cout «

    "The samplestring is: " « endl;

    9:

    cout «

    strSample« endl « endl;

    10:







    1. // Найти в ней подстроку "day"...




    1. size_t charPos = strSample.find ("day", 0);








    1. // Удостовериться, что подстрока найдена...




    1. if (charPos != string::npos)



    16: cout « "First instance of \"day\" was found at position "



    1. charPos;

    Работа с классами строк библиотеки STL

    397




    1. else




    1. cout « "Substring not found." « endl;





    1. 20:

      cout

      «

      endl « endl;

      2 1 :

      cout

      «

      "Locating all instances ofsubstring \"day\"" « endl;

      22:

      23:

      size_t

      SubstringPos = strSample.find ("day", 0);

      24:










    2. while (SubstringPos !=string::npos)




    1. {




    1. cout « "\"day\" found at position " « SubstringPos « endl;








    1. // Продолжить поиск вперед, от следующего символа




    1. size_t nSearchPosition = SubstringPos + 1;



    31:



    1. SubstringPos = strSample.find ("day", nSearchPosition);




    1. }



    34:



    1. cout « endl;








    1. cout « "Locating all instances of character 'a'" « endl;




    1. const charcharToSearch = 'a';




    1. charPos = strSample.find (charToSearch, 0);



    40:



    1. while (charPos !=string::npos)




    1. {




    1. cout « "'" « charToSearch « "' found";




    1. cout « " at position: " « charPos « endl;







    46: // Продолжить поиск вперед, от следующегосимвола



    1. size_t charSearchPos = charPos + 1;








    1. charPos = strSample.find (charToSearch, charSearchPos);




    1. }



    51:



    1. return 0;




    1. }



    Результат


    The sample string is:


    Good day String! Today is beautiful!



    Download 1,38 Mb.

    Do'stlaringiz bilan baham:
    1   ...   276   277   278   279   280   281   282   283   ...   437




    Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
    ma'muriyatiga murojaat qiling

    kiriting | ro'yxatdan o'tish
        Bosh sahifa
    юртда тантана
    Боғда битган
    Бугун юртда
    Эшитганлар жилманглар
    Эшитмадим деманглар
    битган бодомлар
    Yangiariq tumani
    qitish marakazi
    Raqamli texnologiyalar
    ilishida muhokamadan
    tasdiqqa tavsiya
    tavsiya etilgan
    iqtisodiyot kafedrasi
    steiermarkischen landesregierung
    asarlaringizni yuboring
    o'zingizning asarlaringizni
    Iltimos faqat
    faqat o'zingizning
    steierm rkischen
    landesregierung fachabteilung
    rkischen landesregierung
    hamshira loyihasi
    loyihasi mavsum
    faolyatining oqibatlari
    asosiy adabiyotlar
    fakulteti ahborot
    ahborot havfsizligi
    havfsizligi kafedrasi
    fanidan bo’yicha
    fakulteti iqtisodiyot
    boshqaruv fakulteti
    chiqarishda boshqaruv
    ishlab chiqarishda
    iqtisodiyot fakultet
    multiservis tarmoqlari
    fanidan asosiy
    Uzbek fanidan
    mavzulari potok
    asosidagi multiservis
    'aliyyil a'ziym
    billahil 'aliyyil
    illaa billahil
    quvvata illaa
    falah' deganida
    Kompyuter savodxonligi
    bo’yicha mustaqil
    'alal falah'
    Hayya 'alal
    'alas soloh
    Hayya 'alas
    mavsum boyicha


    yuklab olish