Del6 Strömmar Ämnesområden denna föreläsning:

Relevanta dokument
Kapitel 5. Strömmar. Utmatning

Strömmar och strängar

TDIU01 - Programmering i C++, grundkurs

Programmering i C++ EDA623 Strömmar och filer. EDA623 (Föreläsning 9) HT / 19

Föreläsning 4: Filer och strömmar

Generell (template) programmering. Effektiv C++ Slutliga tips Genomgång av gammal tenta. Daniel Aarno Allt som fungerar som x ÄR x

TDIU20 - Objektorienterad programmering i c++ - föreläsning 3

Innehåll. 1 Algoritmer. 2 Strömmar och filer. 3 Iteratorer. 1 Söka, räkna. 2 Jämföra, genomlöpa. 3 Generera nya data. 4 Kopiera och flytta element

4. Standard-containers. Strömmar och filer

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser

6 In- och utmatning, strömmar

TDIU01 (725G67) - Programmering i C++, grundkurs

TDIU20 - Objektorienterad programmering i c++ - föreläsning 4

Operatoröverlagring. endast operatorsymboler definierade i C++ kan överlagras = += -= *= /= %= ^= &= = <<= >>= < > <= >= ==!= && > ->*, [ ] ( )

Introduktion till streams

2D1387, Programsystemkonstruktion med C++ 01/02 1

Innehåll. 1 Deklarationer, scope och livstid. 2 Användardefinierade typer. 4 Operatoröverlagring. 5 In- och utmatning. 6 namnrymder (namespace)

7 Templates och Exceptions

Innehåll. 1 Deklarationer, scope och livstid. 2 Användardefinierade typer. 4 In- och utmatning. 5 Operatoröverlagring. 6 namnrymder (namespace)

C++ - En introduktion

Avrundning och manipulatorer

EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Administration. EDAf30: Programmering i C++, 7.5 hp Obligatoriska moment

Del3 Klassanvändning, operatorer och pekare Ämnesområden denna föreläsning:

ÖREBRO UNIVERSITET. Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13.

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT / 26

TDIU01 - Datortenta (DAT2)

Imperativ programmering (Fö 1 2) C++ Ett första programexempel. Enkel in- och utmatning strömbiblioteket

DD2387 Programsystemkonstruktion med C++ Tentamen 1 Torsdag 7 januari 2016, 14:00-18:00

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Datortenta (DAT2)

Tecken. char. char ch = A ; sizeof(char) = 1 byte (ej 16-bitars tecken som i Java) char namn[]= "Nils"; // längd = 5 bytes

Programsystemkonstruktion med C++

Funktionens deklaration

Högskolan Dalarna sid 1 av 5 Data-avdelningen Hans-Edy Mårtensson

Del2 Klasser, medlemmar och arv Ämnesområden denna föreläsning:

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I

TDIU01 - Programmering i C++, grundkurs

Tillämpad programmering

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

Tentamen i Objektorienterad Programmering 5p, Au, D, Fri, Pr,

Collections Collections "Envisa" objekt Klasserna Bofstream och Bifstream Definition av metoder i klasserna Bifstream och Bofstream Klassen Streng

Tentamen EDAF30 Programmering i C++

Det finns många flaggor till g++,

Lektionsuppgifter. TDDI14 Objektorienterad programmering. Lektionsplanering Lektion Lektion Lektion

Byggstenar. C++-programmets beståndsdelar. C++-programmets beståndsdelar. Grundläggande datatyper

Programmering i C++ EDAF hp. EDAF30 (Föreläsning 2) HT / 18

Programmeringsteknik med C och Matlab

En ström är en klass som representerar en bytesekvens med data. I C++ finns flera typer av strömmar, men de går alla al använda på samma säl.

Programmering i C++ EDA623 Containerklasser och algoritmbibliotek. EDA623 (Föreläsning 10) HT / 33

TDIU01 - Programmering i C++, grundkurs

Tentamen EDAF30 Programmering i C++

Programmering i C++ EDA623 Mallar. EDA623 (Föreläsning 12) HT / 29

ÖREBRO UNIVERSITET. Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 19.

Innehåll. Datatyper Pekare, Arrayer och Referenser. Pekare. Pekare Syntax. Pekare Syntax, operatorerna * och & 5. Pekare och arrayer. Algoritmer.

FÖRSLAG TILL LÖSNING AV Tentamen i Objektorienterad programmering C++ I

TDDC76 - Programmering och Datastrukturer

Enkla datatyper minne

TDDB28 OH Föreläsning: C++ 1

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

Föreläsning 13. In- och utmatning

C++ - En introduktion

C++ Lektion Filhantering

TDIU20 - Objektorienterad programmering i c++ - föreläsning 6

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Algoritmbiblioteket (STL) Designstrategi Generiska algoritmer som fungerar på godtyckliga samlingsdatatyper, vilka har iteratorer.

TDDC76 PoD OH Föreläsning C++ 1 C++

TENTAMEN CD5250. Objektorienterad programutveckling med C++, 5p. Datum: , Tid: 14:00-19:00

TDDC76 - Programmering och Datastrukturer

Intro till standardbiblioteket. Eric Elfving

C++-programmets beståndsdelar

*:85/ID200V C++ HT07. Föreläsning 8 Medlemspekare Undantagshantering Namnrymder

Innehåll. Resurshantering. Resource handles. Minnesallokering. Minnesallokering Exempel: allokering på stacken. 6. Resurshantering

Innehåll. Exceptionella händelser (exceptions, undantag ) Felhantering Tre nivåer av felhantering: Nivå 2: exceptions (eller returvärde)

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

2D1387, Programsystemkonstruktion med C++ Johnny Bigert, Kursens hemsida:

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

TDIU01 - Programmering i C++, grundkurs

2D1387 Programsystemkonstruktion med C++ Laboration 1: Grundläggande C++ 31 augusti 2005

Standard Template Library STL. Behållarklasser

TDDC76 - Programmering och Datastrukturer

Tentamen i DD2387 Programsystemkonstruktion med C++

Programsystem konstruktion med C++ (2D1387) Innehåll. övning 2 klasser och arv

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

TDDC76 - Programmering och Datastrukturer

Klasser. Kapitel 2. Kapitel 2 - Klasser, medlemmar och arv. Klasser. Klasser Medlemmar Arv

Strängar. Strängar (forts.)

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Användning av typeid. Operatorerna typeid och. Filen typeinfo.h måste inkluderas. typeid

4 Operatoröverlagring

Det objektorienterade synsättet. Objekt. Datorprogrammet kan uppfattas som en slags modell av den verklighet programmet skall samverka med.

Deklarera en struct som kan användas för att representera en rät linje

C++ Objektorientering - Klasser. Eric Elfving Institutionen för datavetenskap

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:

TDDC76 - Programmering och Datastrukturer

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

Innehåll. 1 Funktionsmalllar. 2 Klassmallar. struct Name { string s; //... }; const Name & minimum ( const Name & a, const Name & b) { if(a.s < b.

Kapitel 3. Synlighet. Kapitel 3 - Klassanvändning, operatorer och pekare. Synlighet

Exempelsamling Assemblerprogrammering

Introduktionslaboration

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Transkript:

2D1387, Programsystemkonstruktion med C++ 01/02 1 Del6 Strömmar Ämnesområden denna föreläsning: Utmatning till ostream och ostringstream Slide 1 Inmatning från istream och istringstream Överlagring av inmatning och utmatning Iteratorer för in- och utmatning Filhantering med strömmar Exempel på strömmar: #include <iostream> #include <iomanip.h> // innehåller cout // innehåller setw() Slide 2 cout << "Demo:" // utmatning av char * << setw(10) // sätt storlek på utmatningsfält << 4711 // utmatning av int << endl; // radmatning cout << "Name\tPts\n" // rubriker << "Joe\t37\n" // '\t' är tabulatortecken << "Anna\t41\n"; // '\n' är radmatning int i, j; cin >> i >> j; // hämta int från stdin

2D1387, Programsystemkonstruktion med C++ 01/02 2 Utmatning med cout, cerr För utmatning används cout (skriver till stdout), där pre xet c står för character. För felutmatning och loggning använder man cerr resp. clog (skriver till stderr). Samtliga är globala objekt av typen std::ostream med överlagrad operator<<. Slide 3 std::string str = "C++"; const void *p = "Java"; cout << 7L << " " // 7 (long) << 3.14 << " " // 3.14 (double) << str << " " // C++ (std::string) << str.c_str() << " " // C++ (const char *) << p << endl; // 0x135b0 (adress) cerr << "error: div by zero" << endl; // till stderr Formatväljare för utmatning Man kan variera formatet på sin utmatning: Slide 4 double balance = 147.5371; // pengar på kontot cout.precision(5); // använd fem värdesiffror cout << "Balance: " // rubrik << setw(10) // tio siffrors fält << setfill('*') // fyll tomrum med * << balance // utskrift ger resultat: << endl; // Balance: ****147.54

2D1387, Programsystemkonstruktion med C++ 01/02 3 Utmatning till/inmatning från minne Om man vill skriva till/från minnet istället för l kan man använda stringstream som skriver till/från en STL-sträng. #include <stringstream> Slide 5 ostringstream message; // mata till minne int i = 17; double d = 33.3; message << "Error: " << i // fyll med data << " is less than " << d; cerr << message.str() << endl; // skriv ut istringstream source("to be or not to be"); string str; source >> str; // ett ord i taget Inmatning med cin För inmatning från stdin använder man cin. Typen på argumentet till operator>>() bestämmer hur indata tolkas. Slide 6 // antag inmatning för ett bankkonto: // kalle qwerty 147.30 string user, passwd; double balance; cin >> user >> passwd >> balance; if(passwd!= "qwerty") cout << "wrong password" << endl; else cout << "balance: " << balance << endl;

2D1387, Programsystemkonstruktion med C++ 01/02 4 För att förhindra att man skriver utanför avsett minne kan man använda formatväljare för cin: Slide 7 char buf[10]; // läs 9 tecken + '\0' i varje varv while(cin >> setw(sizeof buf) >> buf) do_something(buf); Slide 8 Överlagring av in- och utmatningsoperatorer När man vill överföra data från en ström till ett objekt överlagrar man operator>> När man vill skriva ut ett objekt till en ström överlagrar man operator<< // i headerfilen: class A { // obs! ej deklaration: friend ostream &operator<<(ostream &, const A &); friend istream &operator>>(istream &, A &); int i, j; // åtkomst private }; ostream &operator<<(ostream &, const A &); // deklaration istream &operator>>(istream &, A &);

2D1387, Programsystemkonstruktion med C++ 01/02 5 Slide 9 // i implementationsfilen: ostream &operator<<(ostream &s, const A &a) // definition { return s << "{" << a.i << ", " << a.j << "}"; } istream &operator>>(istream &s, A &a) { return s >> a.i >> a.j; }... A a; cin >> a; cout << a << endl; // skriv till objektet från stdin // skriv ut objektet till stdout In- och utmatningsiteratorer i STL STL-behållare kan man fylla direkt från en ström med en inmatnings-iterator, istream_iterator Man kan mata ut innehållet i en behållare till en ström med en utmatnings-iterator, ostream_iterator Slide 10 vector<int> v; copy(istream_iterator<int>(cin), istream_iterator<int>(), back_inserter(v)); // hämta från stdin // eof-indikator // lägg till sist transform(v.begin(), // beräkna och skriv ut x % 10 v.end(), ostream_iterator<int>(cout, "\n"), bind2nd(modulus<int>(), 10)); // x % y, y = 10

2D1387, Programsystemkonstruktion med C++ 01/02 6 Filhantering För att knyta en ström till en l använder man en lström: ifstream för inmatning eller ofstream för utmatning #include <fstream> // ifstream, ofstream Slide 11 ifstream input("my_file"); ofstream output("my_file.sort"); // skapa infil // skapa utfil // kontrollera att filerna gick att öppna if(!input) cout << "open failed for input file" << endl; if(!output) cout << "open failed for output file" << endl; vector<int> v; int i; while(input >> i) v.push_back(i); // hämta data // lägg i vektorn Slide 12 sort(v.begin(), v.end()); // sortera vector<int>::iterator it; // skapa iterator for(it = v.begin(); it!= v.end(); it++) output << *it << endl; // skriv element

2D1387, Programsystemkonstruktion med C++ 01/02 7 Man kan bestämma hur en l ska öppnas (lägg till, skriv, läs): #include <iostream> #include <fstream> // ios_base // ofstream, fstream Slide 13 ofstream s1("result", ios_base::app); fstream s2("temp", ios_base::in ios_base::out); Olika åtkomsttyper: app lägg till (append), ate nn slutet (at end), binary binär, in läs, out skriv, trunc töm l (truncate)