Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Podstawy informatyki 2012/2013 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.

Podobne prezentacje


Prezentacja na temat: "Podstawy informatyki 2012/2013 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi."— Zapis prezentacji:

1 Podstawy informatyki 2012/2013 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka

2 Struktura wektor struct wektor { int n; double *W; void wypisz(); }; void wektor::wypisz() { for (int i=0;i

3 Co powinien robić operator przypisania? 1.Sprawdzić czy nie kopiuje do samego siebie (A=A). 2.Zlikwidować dotychczasowe wnętrze. 3.Zbudować obiekt jeszcze raz na podobieństwo obiektu wzorcowego. 4.Zwracać skopiowany albo wzorcowy obiekt (są takie same).

4 Operator = wektor &wektor::operator=(const wektor &A) { if (&A==this) return *this; delete [] W; n=A.n; W=new double[n]; for (int i=0;i

5 Struktura wektor struct wektor { int n; double *W; void wypisz(); wektor &operator=(const wektor &A); }; void wektor::wypisz() { for (int i=0;i

6 Struktura wektor wektor Y=X;wywoływany jest nie operator przypisania tylko konstruktor kopiujący!!!

7 std::string Tablice znaków (C-stringi) nie są typem fundamentalnym. Nie ma więc w C++ operacji na C-stringach. Dlatego powstała klasa string, która zawiera funkcje przydatne przy pracy z ciągami znaków.

8 Definiowanie - konstruktory string(); string t1; string(const char *); string t2("AGH"); char c[]="WIMiIP; string t3(c); string t4(&c[1]); string(const char *, size_type); string t5("WIMiIP AGH",6); string(size_type, char); string t6(10,'A'); string(const string &); string t7(t2); string(const string &, size_type, size_type); string t8(t4,1,2);

9 Definiowanie - konstruktory #include … int main(){ string t1; string t2("AGH"); char c[]="WIMiIP"; string t3(c); string t4(&c[1]); string t5("WIMiIP AGH",6); string t6(8,'A'); string t7(t2); string t8(t4,1,2); } AGH WIMiIP IMiIP WIMiIP AAAAAAAA AGH Mi

10 Dodawanie string operator+(const string& lhs, const string& rhs); string operator+(const char* lhs, const string& rhs); string operator+(char lhs, const string& rhs); string operator+(const string& lhs, const char* rhs); string operator+(const string& lhs, char rhs);

11 Operator + int main() { string t1, t2, t3, t4; t1="1 IS"; t2="WIMiIP"; t3="AGH"; t4=t1+"\n"+t2+"\n"+t3; cout << t4 << endl; return 0; } 1 IS WIMiIP AGH

12 Dodawanie z przypisaniem string& string::operator+=(const string& str); string& string::operator+=(const char* s); string& string::operator+=(char c);

13 Operator += int main() { string t; for (int i=static_cast ('A');i ('Z');i++) t+=static_cast (i); cout << t << endl; return 0; } ABCDEFGHIJKLMNOPQRSTUVWXYZ

14 Długość size_type string::size(); size_type string::length(); int main() { string t="AGH"; cout << t << endl; cout << t.length() << endl; cout << t.size() << endl; return 0; } 3333 AGH

15 Pojemność size_type string::capacity(); size_type string::max_size(); bool string::empty(); string tekst; tekst.empty(); tekst.length(); tekst.capacity(); tekst.max_size(); true

16 Pojemność int main() { string tekst; cout <<"Dlugosc\tPojemnosc\n"; cout << tekst.length() << "\t"; cout << tekst.capacity() << endl; for (int i=0; i<250; i++) { tekst+='A'; if (tekst.length()==tekst.capacity()) { tekst+='A'; cout << tekst.length() << "\t"; cout << tekst.capacity() << endl; } return 0; }

17 Rezerwacja pamięci void string::reserve(size_type ile); int main() { string tekst; cout << tekst.length() << "\t"; cout << tekst.capacity() << endl; tekst.reserve(100); cout << tekst.length() << "\t"; cout << tekst.capacity() << endl; if (tekst.empty()) cout << "tekst jest pusty" << endl; return 0; } tekst jest pusty

18 Zmiana długości void string::resize(size_type ile, char znak=\0); int main() { string tekst("ABCDEFGH"); cout << tekst << "\t"; cout << tekst.length() << endl; tekst.resize(3); cout << tekst << "\t"; cout << tekst.length() << endl; tekst.resize(10); cout << tekst << "\t"; cout << tekst.length() << endl; return 0; } ABCDEFGH8 ABC3 ABC10

19 Zmiana długości int main() { string tekst("ABCDEFGH"); cout << tekst << "\t"; cout << tekst.length() << endl; tekst.resize(3); cout << tekst << "\t"; cout << tekst.length() << endl; tekst.resize(10,'.'); cout << tekst << "\t"; cout << tekst.length() << endl; return 0; } ABCDEFGH8 ABC3 ABC

20 reserve vs resize int main() { string tekst("ABCDEFGH"); cout << tekst.length() << "\t"; cout << tekst.capacity() << endl; tekst.resize(3); cout << tekst.length() << "\t"; cout << tekst.capacity() << endl; tekst.resize(10); cout << tekst.length() << "\t"; cout << tekst.capacity() << endl; return 0; }

21 [] oraz at char &string::operator[](size_type pozycja); char &string::at(size_type pozycja); int main() { string tekst("AGH"); cout << tekst[1] << endl; cout << tekst.at(1) << endl; return 0; } GGGG

22 [] vs at string tekst("AGH"); cout << tekst[4] << endl; cout << tekst.at(4) << endl;

23 [] vs at #include using namespace std; int main() { string tekst("AGH"); try { cout << tekst.at(4) << endl; } catch(out_of_range) { cout << "Wartosc spoza stringu" << endl; } return 0; } Wartość spoza stringu

24 substr string string::substr(size_type pozycja, size_type ile); int main() { string tekst1("AGH WIMiIP"), tekst2; tekst2=tekst1.substr(4,6); cout << tekst1 << endl; cout << tekst2 << endl; return 0; } AGH WIMiIP WIMiIP

25 Wyszukiwanie size_type string::find(const char* co, size_type odkad=0); size_type string::find(const string & co, size_type odkad=0);, size_type string::find(const char* co, size_type odkad, size_type dlugosc); size_type string::find(char co, size_type odkad=0);

26 find int main() { string tekst1("AGH WIMiIP AGH"), tekst2("AGH"); string::size_type poz1,poz2; cout << tekst1 << endl; cout << tekst2 << endl; poz1=tekst1.find(tekst2); cout << poz1 << endl; poz2=tekst1.find(tekst2,poz1+1); cout << poz2 << endl; return 0; } AGH WIMiIP AGH AGH 0 11

27 Co jeśli nie ma? int main() { string tekst1("AGH"), tekst2("UJ"); string::size_type poz; poz=tekst1.find(tekst2); if (poz==string::npos) cout<<"Nie znalazlem\n"; else cout<<"Znalazlem\n"; return 0; } Nie znalazłem

28 find int main() { string tekst1("ABCDEF"); string::size_type poz1; cout << tekst1 << endl; poz1=tekst1.find("BCE"); cout << poz1 << endl; return 0; }

29 find int main() { string tekst1("ABCDEF"); string::size_type poz1; cout << tekst1 << endl; poz1=tekst1.find("BCE",0,2); cout << poz1 << endl; return 0; } 1

30 Wyszukiwanie size_type string::rfind(const char* co, size_type odkad=npos); size_type string::rfind(const string & co, size_type odkad=npos);, size_type string::rfind(const char* co, size_type odkad, size_type dlugosc); size_type string::rfind(char co, size_type odkad=npos);

31 find vs rfind int main() { string tekst1("AGH WIMiIP AGH"), tekst2("AGH"); string::size_type poz_p,poz_k; poz_p=tekst1.find(tekst2); poz_k=tekst1.rfind(tekst2); cout << tekst1 << endl; cout << tekst2 << endl; cout << poz_p << endl; cout << poz_k << endl; return 0; } AGH WIMiIP AGH AGH 0 11

32 Wyszukiwanie size_type string::find_first_of( ); size_type string::find_last_of( ); size_type string::find_first_not_of( ); size_type string::find_last_not_of( ); Każda z funkcji przyjmuje takie same zestawy argumentów jak funkcje find i rfind!

33 find_..._... int main() { string tekst("abcdefghij"), samogloski("aeiouy"); string::size_type poz1,poz2,poz3,poz4; poz1=tekst.find_first_of(samogloski); poz2=tekst.find_last_of(samogloski); poz3=tekst.find_first_not_of(samogloski); poz4=tekst.find_last_not_of(samogloski); cout << tekst << endl; cout << samogloski << endl; cout << poz1 << endl << poz2 << endl; cout << poz3 << endl << poz4 << endl; return 0; } abcdefghij aeiouy

34 erase oraz clear string &string::erase(size_type od=0, size_type do=npos); void string::clear(); int main() { string tekst("AGH WIMiIP AGH"); cout << tekst << endl; tekst.erase(4,6); cout << tekst << endl; tekst.erase(3); cout << tekst << endl; tekst.clear(); cout << tekst << endl; return 0; } AGH WIMiIP AGH AGH

35 Wstawianie string &string::insert(size_type gdzie, const string &co); string &string::insert(size_type gdzie, const string &co, size_type odkad, size_type ile); string &string::insert(size_type gdzie, const char *co); string &string::insert(size_type gdzie, const char *co, size_type ile); string &string::insert(size_type gdzie, size_type ile, char co);

36 insert int main() { string tekst("AGH WIMiIP AGH"); cout << tekst << endl; tekst.erase(4,6); cout << tekst << endl; tekst.insert(4,"WIMiIP"); cout << tekst << endl; return 0; } AGH WIMiIP AGH AGH AGH WIMiIP AGH

37 Zastępowanie string &string::replace(size_type odkad, size_type ile, const string &czym); string &string::replace(size_type odkad, size_type ile, const string &czym, size_type odkad_brac, size_type ile_brac); string &string::replace(size_type odkad, size_type ile, const char *czym); string &string::replace(size_type odkad, size_type ile, const char *czym, size_type ile_brac); string &string::replace(size_type odkad, size_type ile, size_type ile_znakow, char znak);

38 replace int main() { string tekst("AGH WIMiIP"); cout << tekst << endl; tekst.replace(4,6,"WEAIiE"); cout << tekst << endl; return 0; } AGH WIMiIP AGH WEAIiE

39 replace int main() { string tekst(" "); cout << tekst << endl; tekst.replace(4,4,"abc",0,2); cout << tekst << endl; return 0; } ab90

40 Zmiana string na C-string const char *string::c_str();

41 Operatory porównania bool operator==( const string& lhs, const string& rhs ); bool operator==( const char* lhs, const string& rhs ); bool operator==( const string& lhs, const char* rhs ); Analogicznie przeładowane są operatory: !=<>>=<=

42 Porównywanie int main() { string t[2]={"IMiIP","EAIiE"}; cout << (t[0]

43 Porównywanie int string::compare(const string& str) const; int string::compare(const char* s) const; int string::compare(size_type pos1, size_type n1, const string& str) const; int string::compare(size_type pos1, size_type n1, const char* s) const; int string::compare(size_type pos1, size_type n1, const string& str, size_type pos2, size_type n2) const; int string::compare(size_type pos1, size_type n1, const char* s, size_type n2) const;

44 Porównywanie int main() { string t[2]={"IMiIP","EAIiE"}; cout << (t[0].compare(t[1])) << endl; cout << (t[0].compare(t[0])) << endl; cout << (t[1].compare(t[0])) << endl; return 0; } 1 0

45 Porównywanie int main() { string t1("AB CD"),t2("CD AB"); cout<

46 swap void swap(string& lhs, string& rhs); void string::swap(string& str); int main() { string t[2]={"IMiIP","EAIiE"}; cout<

47 int main() { int a,b; cin>>a; cout<>b; cout<

48 int main() { string t1,t2; cin>>t1; cout<>t2; cout<

49 getline istream& getline(istream& is, string& str); int main() { string t; getline(cin,t); cout << t << endl; return 0; } AGH WIMiIP

50 getline istream& getline(istream& is, string& str, char delim); int main() { string t; getline(cin,t,'.'); cout << t << endl; return 0; } Ala ma kota. To kot Ali. Ala ma kota

51 Iterator iterator string::begin(); iterator string::end(); int main() { string tekst("AGH"); string::iterator i,j; i=tekst.begin(); j=tekst.end(); cout<

52 Iterator int main() { string tekst("AGH"); string::iterator it; it=tekst.begin(); for (int j=0; j

53 Iterator int main() { string tekst("AGH"); string::iterator i,j; i=tekst.begin(); j=tekst.end(); while (i!=j) { cout<<*i; i++; } cout<

54 Iterator int main() { string tekst(" "); string::iterator i,j; i=tekst.begin(); j=tekst.end(); while (i

55 Iterator do stałego obiektu int main() { const string tekst(" "); string::const_iterator i; i=tekst.begin(); return 0; }

56 Stały iterator int main() { string tekst(" "); const string::iterator i=tekst.begin(); return 0; }

57 Prezentacja udostępniona na licencji Creative Commons: Uznanie autorstwa, Na tych samych warunkach 3.0. Pewne prawa zastrzeżone na rzecz autorów. Zezwala się na dowolne wykorzystywanie treści pod warunkiem wskazania autorów jako właścicieli praw do prezentacji oraz zachowania niniejszej informacji licencyjnej tak długo, jak tylko na utwory zależne będzie udzielana taka sama licencja. Tekst licencji dostępny jest na stronie:


Pobierz ppt "Podstawy informatyki 2012/2013 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi."

Podobne prezentacje


Reklamy Google