Kapitel 8. Input och output

Innehållsförteckning
Streams och buffring
Utskrift till skärmen
Inmatning från tangentbordet
Utskrift till cerr och clog

Detta kapitel redogör för hur grundläggande I/O fungerar i C++. Läsaren lär sig hur data kan skrivas ut till skärmen och läsas in från tangentbordet. Trots att de enklaste formerna redan behandlats i Kapitel 4 tas allting upp från grunderna här för att få all information sammanfattad på ett ställe.

Streams och buffring

Nästan all I/O i C++ går via något som brukar kallas streams på engelska, ungefär "strömmar" på svenska. Dessa syftar till att data som t.ex. skrivs ut till skärmen hamnar i den stream som går till skärmen. En stream är en serie med bytes. I program som skriver ut text på skärmen kan man se denna ström av bytes som en ström av tecken, där varje byte är ett tecken. Förutom strömmen som går ut ur programmet till skärmen finns det även andra typer av strömmar. Det finns bl.a. en ström som innehåller all indata som kommer från tangentbordet, från vilken programmet kan läsa kommandon från användaren. Även filhantering bildar strömmar i C++.

Buffring av data

All data som skrivs till eller läses från de normala strömmarna är buffrad. Detta har endast ringa betydelse för programmeraren, men behandlas här för att ge bakgrundsinformation. Då ett program läser eller skriver till t.ex. en fil eller skärmen kommer all data som finns i strömmarna att vara buffrad. Denna buffring sköts av operativsystemet och är till för att göra I/O mera effektiv. Genom att buffra data kan man samla ihop större mängder data som sedan snabbt skrivs på en gång till disk. Samma händer med text som skrivs ut på skärmen, den blir även buffrar, för att sedan skrivas ut på en gång. Då ett program läser data från en fil läser operativsystemet in en större mängd av filen på en och samma gång och buffrar sedan det lästa. Mera om buffring kan du läsa t.ex. i kursen om operativsystem. Det är dock viktigt att veta att buffring förekommer, eftersom den i vissa fall inverkar på vad som t.ex. syns på skärmen.