13.1 Standardowa biblioteka C Klasa string... 3

Podobne dokumenty
Podstawy programowaniu. Wykład: 3. Budowa programu Operacje we/wy Instrukcje wyboru. dr Artur Bartoszewski - Podstawy programowania, sem.

Języki C i C++ Wykład: 1. Wstęp Budowa programu Operacje we/wy Instrukcje wyboru. dr Artur Bartoszewski - Języki C i C++, sem.

Zaawansowane programowanie w języku C++ Biblioteka standardowa

dr inż. Jarosław Forenc

Jzyk C++ cz 2. Jarosław Gramacki Instytut Informatyki i Elektroniki

Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43

STL: Lekcja 1&2. Filozofia STL

Język C++ wykład VIII

Programowanie w C++ Wykład 7. Katarzyna Grzelak. 23 kwietnia K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40

Programowanie i struktury danych

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

Operatory na rzecz typu TString

STL Standardt Template Library (wprowadzenie)

Aby uzyskać zaliczenie w pierwszym terminie (do 30 stycznia 2018) rozliczyć trzeba co najmniej 8 projektów, po 4 z każdej z części: C++ oraz Python.

Podstawy Programowania

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

Popularne biblioteki C++

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

Kurs programowania. Wykład 9. Wojciech Macyna

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

#include <iostream> #include <string> using namespace std; auto main() -> int { string s1; // pusty string. Klasa std::string

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

STL: kontenery. STL: kontenery. STL: kontenery. Typy kontenerów STL. STL: kontenery. STL: kontenery. multimap. Kontener map: przykład zadanie:

Technologie programowania Wykład 4. Szablony funkcji Notes. Szablony funkcji Notes. Szablony funkcji Notes. Notes. Przemek Błaśkiewicz.

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

obiekty funkcyjne - funktory

Algorytmy i Struktury Danych. Anna Paszyńska

Programowanie komputerowe. Zajęcia 4

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Pliki wykład 2. Dorota Pylak

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Programowanie obiektowe

Języki Programowania. Prowadząca: dr inż. Hanna Zbroszczyk. tel: Konsultacje: piątek:

BIBLIOTEKA STANDARDOWA C++

Paradygmaty programowania

Klasa iostream... 1 Klasy ofstream, ifstream Struktura FILE... 8

Operacje wejścia/wyjścia (odsłona druga) - pliki

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

Programowanie Obiektowew języku C++ Zadania L4

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Algorytmy i Struktury Danych.

10.1 Szablony Szablony funkcji Szablony klas Szablony jako wstęp do biblioteki STL... 10

Język C++ Różnice między C a C++

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Programowanie komputerowe. Zajęcia 5

Wejście wyjście strumieniowe

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Podstawy programowania w języku C++

Język C++ część 9 szablony klas. Jarosław Gramacki Instytut Informatyki i Elektroniki. szablony funkcji

Podstawy programowania skrót z wykładów:

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

Algorytmy, iteratory, kolekcje niestandardowe

Pliki wykład 2. Dorota Pylak

Projektowanie klas c.d. Projektowanie klas przykład

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Programowanie 2. Język C++. Wykład 3.

Wstęp do Programowania 2

Dziedziczenie & W slajdach są materiały zapożyczone z

Programowanie i struktury danych

Szablon klasy std::vector

Programowanie Obiektowew języku C++ Zadania L4

Wstęp do programowania obiektowego. Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Operacje wejścia/wyjścia odsłona pierwsza

Klasa std::string. Bogdan Kreczmer. ZPCiR IIAiR PWr pokój 307 budynek C3.

Programowanie Obiektowo Zorientowane w języku C++ Biblioteka STL

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 20 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 32

PARADYGMATY PROGRAMOWANIA Wykład 3

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Wzorce funkcji (szablony)

Programowanie w języku C++

Część 4 życie programu

Szablony klas, zastosowanie szablonów w programach

C++ Przeładowanie operatorów i wzorce w klasach

Zaawansowane programowanie w C++ (PCP)

Programowanie obiektowe i C++ dla matematyków

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Wykład 2 Operacje wejściawyjścia. Ewa Gajda

Wstęp do programowania obiektowego. STL - Standard Template Library

Szablony funkcji i szablony klas

Programowanie w językach

Języki programowania obiektowego Nieobiektowe elementy języka C++

Symfonia C++ standard : programowanie w języku C++ orientowane obiektowo. T. 1 / Jerzy Grębosz. Wyd. 3 C - popr. Kraków, 2015.

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Platformy Programistyczne Podstawy języka Java

Transkrypt:

13.1 Standardowa biblioteka C++... 1 13.2 Klasa string... 3 13.1 Standardowa biblioteka C++ C++ Standard Library - Standardowa biblioteka C++, jest element standardu ISO/IEC 14882, Programming languages C++. Standardową bibliotekę C++ tworzą funkcje zadeklarowane w 32 standardowych plikach nagłówkowych, 2 dodatkowych plikach <hash_map>, <hash_set>, 18 plikach nagłówkowych standardowej biblioteki języka C. Pliki nagłówkowe standardowej biblioteki języka C++. <algorithm> <bitset> <complex> <deque> <exception> <fstream> <functional> <hash_map> <hash_set> <iomanip> <ios> <iosfwd> <iostream> <istream> <iterator> <limits> <list> <locale> <map> <memory> <new> <numeric> <ostream> <queue> <set> <sstream> <stack> <stdexcept> <streambuf> <string> <strstream> <utility> <valarray> <vector> 18 plików nagłówkowych standardowej biblioteki języka C. <cassert> <cctype> <cerrno> <cfloat> <ciso646> <climits> <clocale> <cmath> <csetjmp> <csignal> <cstdarg> <cstddef> <cstdio> <cstdlib> <cstring> <ctime> <cwchar> <cwctype> 1

Standardowa biblioteka C++ napisana jest dwóch konwencjach: konwencja biblioteki iostreams, konwencja biblioteki STL (Standard Template Library). Komponenty standardowej biblioteki C++: biblioteka wsparcia języka (Language Support). Biblioteka zawiera np. elementy określające granice implementacji (<climits>, <cfloat>),funkcje dynamicznej alokacji pamięci ( <new>). biblioteka obsługi wyjątków (Diagnostics Library) W pliku nagłówkowym <exception> zadeklarowane są klasy obsługi wyjątków, w <cassert> funkcja debugowania. biblioteka narzędzi ogólnych (General Utilities Library). Elementy biblioteki uŝywane przez inne komponenty Biblioteki Standardowej C++, np. szablony operatorów!=, >, <=, >=, zbiór obiektów funkcyjnych (function objects) dla biblioteki STL. biblioteka obsługi języków narodowych (Localization Library). Obsługa róŝnych formatów liczb, daty, czasu, waluty, innych. klasa bit_string, zawiera operacje na tablicach bitowych biblioteka kontenerów (Containers Library). Element biblioteki STL. biblioteka iteratorów (Iterators Library). Element biblioteki STL. biblioteka algorytmów (Algorithms Library). Element biblioteki STL. biblioteka operacji numerycznych (Numerics Library). 2

13.2 Klasa string Klasa string jest elementem, konwencji biblioteki iostreams. Wybrane metody klasy String. Clone() Zwraca referencję do danego stringu. Compare() Concat() Contains() Copy() Equals GetHashCode() Insert() Remove() Replace() Porównuje stringi. Metoda przeładowana Łączy stringi. Metoda przeładowana. Zwraca wartość wskazująca, czy określony podstring zawiera się w stringu. Tworzy instancję stringu, z tą samą wartością. Określa czy dwa stringi mają taką samą wartość. Metoda przeładowana. Zwraca hash code stringu. Metoda nadpisuje Object..::.GetHashCode()()(). Wstawia string do określonego miejsca w innym stringu. Usuwa okresloną liczbę znaków ze stringu. Metoda przeładowana. Zamienia dany znak występujący w stringu na inny. Metoda przeładowana Wybrane rozszerzenia metod klasy String. First() Last() Max() Min() Reverse() Odwraca kolejność znaków w stringu. Operatory klasy String. Equality Określa czy dwa stringi mają taką samą wartość. Inequality Określa czy dwa stringi mają róŝną wartość. Pola klasy String. Empty Pusty string. Pole typu read-only. Property klasy String. Chars Pobiera znak z określonego miejsca w stringu. Length Pobiera liczbę znaków w stringu. 3

Przykład 1. Operacje na stringach. Operacje na tablicach znaków (w13-01-string-c-style.cpp). Metoda: size(). string strtekst1("abc"); // klasa string const char * pcc ="123cdefg"; // styl C strtekst1 = strtekst1 + pcc; cout <<"strtekst= " << strtekst1 << endl; // odwrotne przyporzdkowanie // pcc = strtekst1; // blad, C2679 pcc = strtekst1.c_str(); //ok cout <<"pcc= " << pcc << endl; // dlugosc stringu int iwielkosc; iwielkosc = strtekst1.size(); cout <<"iwielkosc= " << iwielkosc << endl; // styl C, strlen() cout <<"strlen(pcc)= " << strlen(pcc) << endl; // dostep do znaku for(unsigned int i=0; i<strtekst1.size(); i++) if(strtekst1[i]=='b') cout << strtekst1[i] <<endl; // definicja tablicy znaków char * new_ctab = new char[strlen(pcc)+1]; strcpy_s(new_ctab,strlen(pcc)+1, pcc); cout <<"new_ctab= " << new_ctab << endl; delete [] new_ctab; 4

Przykład 2. Operacja na stringach dodawanie stringów (w13-02-string-dodawanie.cpp). string s1, s2; string s3 = "Dzien"; string s4("+ do "); s2 = "+ bry"; s1 = s3 + " " + s4; s1 += " + *** "; cout << s1 + s2 + "!" << endl; 5

Przykład 3. Operacje na stringach (w13-03-string-compare-append.cpp). Metody: length() compare() append() insert() erase() string str1("dzien Dobry"), str2(str1), str3; str3 = str1; str2 = "ABCD efgh"; // inicjalizacja zmiennej typu char const * za pomoca funkcji c_str() char const * c = str2.c_str(); cout << * c <<endl; unsigned int i = str1.size(); cout << i <<endl; i = str1.length(); cout << i <<endl; // metoda compare() int x; x = str1.compare(str2); cout << "str1.compare(str2)= " << x << endl; x = str2.compare(str1); cout << "str2.compare(str1)= " << x << endl; x = str1.compare(str1); cout << "str1.compare(str1)= " << x << endl << endl; // metoda append() str1.append(", jest 8.00."); cout << "str1= " << str1 << endl; // metoda insert() str1.insert(i+7, " godz. "); cout << "str1= " << str1 << endl; // metoda erase(int from, int to) cout << str1.erase(5, 9) << endl; 6

Przykład 4. Operacje na stringach (w13-04-string-find-substr.cpp). Metody: find() substr() void main () int ipozycja; string szrodlo("abcdefghijkl"); string s1("ghi"); //metoda find() ipozycja = szrodlo.find(s1); cout <<"String: " << s1 << " zaczyna sie od bajtu: "<< ipozycja << endl; string s2("ghj"); ipozycja = szrodlo.find(s2); if(!ipozycja) cout << "String: "<< s2 << " zaczyna sie od bajtu: " << ipozycja << endl; cout<<"nie znaleziono stringu: " << s2 << endl; int start = 2; int size = 3; string sszukany; //metoda substr(int start, int size) sszukany = szrodlo.substr(start, size); cout << "3 bajtowy string po 2 bajcie to: "<< sszukany << endl; Przykład 5. Program kopiuje dane tekstowe z pliku do pliku (w13-05-stringzplikudopliku.cpp). JeŜeli nie ma pliku do zapisu, to jest tworzony. #include <fstream> ifstream in("zpliku.txt"); ofstream out("dopliku.txt"); string s; while(getline(in, s)) out << s << "\n"; 7

Przykład 6. Program kopiuje dane z pliku do pliku numerując linie (w13-06-stringzplikudoplikuznumeremlinii.cpp). JeŜeli nie ma pliku do zapisu, to jest tworzony. #include <fstream> #include <vector> vector<string> v; ifstream in("zpliku.txt"); ofstream out("dopliku.txt"); string line; while(getline(in, line)) v.push_back(line); for(unsigned int i = 0; i < v.size(); i++) out << i << ": " << v[i] << "\n"; cout << i << ": " << v[i] << endl; 8

Przykład 7. Operacje na stringach, metoda lexicographical_compare(), (w13-07-stringcomp.cpp). Metody: lexicographical_compare() begin() end() #include <algorithm> string s1 = "abcd"; string s2 = "abd"; if (lexicographical_compare(s1.begin(), s1.end(), s2.begin(), s2.end())) cout << s1 << " < " << s2 << endl; cout << s1 << " >= " << s2 << endl; s2 = "abc"; if (lexicographical_compare(s1.begin(), s1.end(), s2.begin(), s2.end())) cout << s1 << " < " << s2 << endl; cout << s1 << " >= " << s2 << endl; s2 = "abcd"; if (lexicographical_compare(s1.begin(), s1.end(), s2.begin(), s2.end())) cout << s1 << " < " << s2 << endl; cout << s1 << " >= " << s2 << endl; 9

Przykład 8. Operajce na stringach. Porównanie stringów (w13-08-stringpermutacje.cpp). int PorownajStringi(const string& s1, const string& s2) string::const_iterator p1 = s1.begin(), p2 = s2.begin(); while(p1!= s1.end() && p2!= s2.end()) if(toupper(*p1)!= toupper(*p2)) return (toupper(*p1)<toupper(*p2))? -1 : 1; p1++; p2++; return(s2.size() - s1.size()); string s1("czerowny"); string s2("zielony"); string s3("niebieski"); string s4("zielony"); cout << PorownajStringi(s1, s2) << endl; cout << PorownajStringi(s2, s3) << endl; cout << PorownajStringi(s2, s4) << endl; 10

Przykład 9. Operacje na stringach (w13-09-string-partition.cpp). Metody: begin() end() prev_permutation(first, Last), zmienia uporządkowanie znaków od znaku First do Last. Metoda porównuje uporządkowanie stringu z uporządkowaniem alfabetycznym. Metoda zwraca wartość true, gdy zmieni uporządkowanie znaków. JeŜeli permutacji nie było zwraca wartość false. next_permutation(first, Last), zmienia uporządkowanie znaków na uporządkowanie alfabetyczne. #include <algorithm> string s = "abdc"; // sting z permutcją // string s = "abcd"; // sting uprządkowany alfabetycznie cout << "s = " << s << endl; // previous lexicographic permutation if (prev_permutation(s.begin(), s.end())) cout << "s = " << s << endl; cout << "brak poprzedniej permutacji: s = " << s << endl; if (prev_permutation(s.begin(), s.end())) cout << "s = " << s << endl; cout << "brak poprzedniej permutacji: s = " << s << endl; if (next_permutation(s.begin(), s.end())) cout << "s = " << s << endl; cout << "brak nastepnej permutacji: s = " << s << endl; if (next_permutation(s.begin(), s.end())) cout << "s = " << s << endl; cout << "brak nastepnej permutacji: s = " << s << endl; 11

Przykład 10. Operacje na stringach, metoda partition(), (w13-10-porownajstringi.cpp). Metody: partition() algorytm ustawia elementy, które spełniają podany warunek, przed elementami, które go nie spełniają. Metoda zwraca iterator przed pierwszym elementem który nie spełnił podanego warunku template <class ForwardIterator, class Predicate> ForwardIterator partition( ForwardIterator first, ForwardIterator last, Predicate pred ); bind1st() funkcja szablonowa która tworzy adapter do konwersji dwuargumentowych obiektów funkcyjnych (binary function object) na jednoargumentowe obiekty funkcyjne (unary function object) poprzez zastapienie pierwszego obiektu wartością Adapert funkcyjny to adaper zwracający obiekt funkcyjny. Parametry bind1st(): _Func - dwuargumentowy obiekt funkcyjny który ma być przekonwertowany. _Left - Wartość z którą będzie pierwszy argument dwuargumentowego obiektu funkcyjnego będzie przypisany. template<typename F> binder1st<f> bind1st(f op, typename F::first_argument_type val) return binder1st<f>(op,val); #include <functional> #include <algorithm> string s = "abcdefgh"; partition(s.begin(), s.end(), bind1st(greater<char>(), 'd')); cout << "s = " << s << endl; 12

Przykład 11. Prosty obiekt funkcyjny (function object), (w13-11-obiektyfunkcyjne.cpp). Przeładowanie operatora ( ). class A public: double operator()(double); double f(double); ; double A:: operator()(double x) // przeładowanie opertora ( ) return f(x); double A:: f(double x) x = x*x; return x; A a; cout << a(3.14) << endl; 13