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

Podobne dokumenty
Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku.

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

Pliki wykład 2. Dorota Pylak

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

Programowanie w językach

Wejście wyjście strumieniowe

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Spis treści OBSŁUGA PLIKÓW W JĘZYKU C++ Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF32

Pliki wykład 2. Dorota Pylak

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

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

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

C++ - [3-5] Pliki i strumienie w C++

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

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia

jest mocny, skoro da się w nim wyrazić nowe pojęcia; łatwiej przenieść go na nową platformę jest mniejszy.

Pliki wykład. Dorota Pylak

Pliki wykład. Dorota Pylak

Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string)

Programowanie Obiektowe i C++

1 Pierwsze kroki w C++ cz.3 2 Obsługa plików

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

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

Operacje na plikach (niskiego poziomu) < IO.H >

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

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

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

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

4. Wyrzuć wyjątek jeśli zmienna ist nie istnieje bloki: try, catch i wyrzucanie wyjątku

Język C++ zajęcia nr 1

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

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

Podstawy Programowania

Referencje. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zaawansowane Programowanie Obiektowe. Informacje organizacyjne:

Pliki. Informacje ogólne. Obsługa plików w języku C

C++ - szablony. C++ - szablony. C++ - szablony. C++ - szablony. C++ - szablony. C++ - szablony

Wstęp do programowania. Dariusz Wardecki, wyk. X

Wykład :37 PP2_W9

Wstęp do informatyki- wykład 8 Pętla while, do while,for -pętla w pętli- przykłady Operator rzutowania Manipulatory

Ok. Rozbijmy to na czynniki pierwsze, pomijając fragmenty, które już znamy:

Biblioteka standardowa - operacje wejścia/wyjścia

Podstawy programowania w C++

Język C++ wykład VIII

C++ - strumienie. C++ - strumienie. C++ - strumienie. C++ - strumienie. C++ - strumienie STRUMIENIE

Wykład nr 4. Temat: Dynamiczny przydział pamięci, zastosowania wskaźników, praca z plikami.

Programowanie i struktury danych

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Wstęp do programowania obiektowego

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

C++ - szablony. C++ - szablony. C++ - strumienie. C++ - strumienie. C++ - strumienie STRUMIENIE

dr inż. Paweł Myszkowski Wykład nr 8 ( )

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

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Część 4 życie programu

Funkcje zawarte w bibliotece < io.h >

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

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

C++ - strumienie. C++ - strumienie. C++ - strumienie. C++ - strumienie. C++ - strumienie STRUMIENIE

Zadanie nr 3: Sprawdzanie testu z arytmetyki

Programowanie obiektowe

Ghost in the machine

Pliki i manipulatory. - Łańcuchowe funkcje wejścia - getline(string) Dorota Pylak - Tryby otwarcia pliku - Formatowanie manipulatory

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

C++ wprowadzanie zmiennych

Funkcje zawarte w bibliotece < io.h >

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

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

Pliki. Informacje ogólne. Obsługa plików w języku C

C++ - szablony. C++ - szablony. C++ - szablony. C++ - szablony SZABLONY SZABLONY FUNKCJI

klasy strumieniowe uzupełnienie Języki Programowania (język C++) Klasy strumieniowe Pliki nagłówkowe Klasy strumieniowe Obiekty globalne

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

Podstawy Programowania Podstawowa składnia języka C++

Referencje. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zaawansowane Programowanie Obiektowe. Informacje organizacyjne:

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

Pracownia specjalistyczna. Materiały przygotowali: mgr inż. Wojciech Frohmberg, mgr inż. Michał Kierzynka

Zmienne, stałe i operatory

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

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania. Programowanie systemów informatycznych laboratorium. Ćw. 3: Akwizycja danych. RS 232 cd.

Wstęp do programowania. Wykład 1

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

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

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

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.

Systemy operacyjne. System operacyjny Linux - wstęp. Anna Wojak

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

Argumenty wywołania programu, operacje na plikach

Strumienie standardowe C

TEMAT : KLASY DZIEDZICZENIE

KURS C/C++ WYKŁAD 1. Pierwszy program

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

Nowe słowa kluczowe. Komentarze. Wskaźniki typu void. class, delete, new, friend,... /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza)

Referencje. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zaawansowane Programowanie Obiektowe. Informacje organizacyjne:

Podstawy programowania w języku C++

Transkrypt:

Wykład 2 Operacje wejściawyjścia w C++ Ewa Gajda

Strumienie Operacje wejścia-wyjścia w C++ realizowane są przy pomocy tak zwanych strumieni. Strumieo można sobie wyobrażad jako ciąg znaków bądź bajtów płynący od źródła do ujścia, np. z klawiatury do pamięci lub z pamięci na dysk twardy. Czytanie lub wypisywanie bajtów płynących strumieniem może byd realizowane na dwóch poziomach: Na poziomie wysokim interpretujemy zawartośd kolejnych bajtów płynących strumieniem Na przykład pewne bajty interpretujemy jako znaki kooca linii, tabulacji, kooca pliku Ciągi bajtów mogą byd (na żądanie) interpretowane jako zapisy liczb Na poziomie niskim wiernie odtwarzamy zawartośd strumienia bajt po bajcie.

Strumienie Ze względu na różne stosowane standardy zapisu znaków narodowych, jeden znak w strumieniu może zajmowad jeden dwa i więcej bajtów. Z tego powodu w bibliotece standardowej C++ strumienie realizowane są jako szablony klas, których parametrem jest typ stosowanych znaków. Strumienie realizowane są w C++ jako obiekty następujących szablonów klas zdefiniowanych w przestrzeni nazw std basic_istream<> - szablon klas udostępniających formatowane strumienie wejściowe (wczytujące do pamięci) basic_ostream<> - szablon klas udostępniających formatowane strumienie wyjściowe (wypisujące z pamięci) basic_iostream<> - szablon klas pochodnych od powyższych dwóch, umożliwia tak czytanie jak i pisanie Szablony te są zdefiniowane w standardowej bibliotece C++.

Pliki nagłówkowe Biblioteka standardowa C++ dostarcza m.in. następujące pliki nagłówkowe: <iosfwd> - deklaracje zapowiadające klas strumieniowych. <istream> - definicje szablonu klas basic_istream<> oraz basic_iostream<> <ostream> - definicje szablonu klas basic_ostream<> <iostream> - definicje globalnych obiektów strumieni <fstream> - operacje wejścia-wyjścia na plikach <strstream> - operacjach wejścia-wyjścia z/do tablic <sstream> - operacje wejścia-wyjścia z/do łaocuchów klasy string

Strumienie predefiniowane Dla naszej wygody kompilator automatycznie definiuje cztery strumienie dla typu char: cout standardowy strumieo wyjścia (zwykle ekran). cin standardowy strumieo wejścia (zwykle klawiatura). cerr standardowy strumieo dla komunikatów o błędach (zwykle także ekran). clog standardowy strumieo protokołów (logów)

Operatory << i >> Formatowane wpisywanie informacji do strumienia i czytanie ze strumienia zrealizowano w C++ poprzez szablony przeładowujące operatory << i >>. Przykładowo mamy do dyspozycji następujące funkcje biblioteczne dla klasy ostream: ostream& operator<<(ostream& wyjscie, int i) ostream& operator<<(ostream& wyjscie, float f) ostream& operator<<(ostream& wyjscie, char* c) Ponieważ funkcje te zwracają referencję do strumienia wyjscie (otrzymanego jako argument), możliwe jest kaskadowe wywołanie: int ilosc; float waga; char opis[20];... cout << "Opis: " << opis << " Ilość: " << ilosc << " Waga: " << waga;

Znaczniki i manipulatory Do sterowania pracą ze strumieniem służą manipulatory - specjalne wartości, które można wstawiad do strumienia albo z niego wyjąd po to, by wywoład zamierzony efekt uboczny polegający na zmianie sposobu formatowania: dec -- włącz konwersję dziesiątkową hex -- włącz konwersję szesnastkową oct -- włącz konwersję ósemkową boolalpha -- włącz tekstowy zapis wartości logicznych noboolalpha -- wyłącz tekstowy zapis wartości logicznych flush -- opróżnij bufor endl -- wypisz znak kooca linii i opróżnij bufor ends -- wypisz znak NULL ('\0') ws -- przeskocz wszystkie białe znaki setw(int n) -- ustaw szerokośd drukowania na n pól setfill(int c) -- znak c zostanie użyty do wypełnienia nadmiarowych pól setprecision(int n) -- określa dokładnośd po przecinku wypisywanej liczby Przykład

Nieformatowane operacje wejścia Chod zdarza się to rzadziej, czasem chcemy wiedzied dokładnie co płynie strumieniem i formatowanie przestaje byd udogodnieniem, a zaczyna byd utrudnieniem. Wtedy można posłużyd się funkcjami realizującymi nieformatowane operacje wejścia-wyjścia. istream& get(char& z); Powyższa funkcja wyjmuje ze strumienia jeden bajt i umieszcza go w podanej zmiennej z. Jako rezultat zwraca referencję do strumienia (chyba, że napotka znak kooca pliku EOF, wtedy zwraca NULL). Umożliwia to wołanie kaskadowe cin.get(a).get(b).get(c);

Nieformatowane operacje wejścia int get(void); Powyższa funkcja zwraca wczytany znak. istream& get(char* gdzie, int ile, char ogran='\n'); Funkcja pozwala na wczytanie maksymalnie ile bajtów do tablicy o adresie gdzie. Znak ogran to znak, po którego napotkaniu wczytywanie jest przerywane. istream& getline(char* gdzie, int ile, char ogran='\n'); Funkcja działa jak poprzednia, ale dodatkowo wyjmuje też sam ogranicznik ze strumienia. istream& read(char* gdzie, int dlugosc); Funkcja czyta podaną ilośd znaków do podanej tablicy. Sygnalizuje błąd, jeśli napotka po drodze znak kooca pliku.

Nieformatowane operacje wyjścia ostream& put(char z); Funkcja wstawia do strumienia podany znak. Jako rezultat zwraca referencję do strumienia (chyba, że z jakiegoś powodu operacja pisania się nie uda, wtedy zwraca NULL). ostream& write(const char* skad, int dlugosc); Funkcja wstawia do strumienia podaną ilośd bajtów z podanej tablicy.

Operacje wejścia-wyjścia na plikach Operacje wejścia-wyjścia na plikach dla typu char obsługiwane są w C++ przez ifstream, ofstream oraz fstream (biblioteka standardowa C++). Aby czytad z pliku lub do niego pisad należy: zdefiniowad strumieo, czyli wykreowad odpowiedni obiekt jednej z powyższych klas określid z jakim plikiem strumieo ten ma się komunikowad i otworzyd ten plik przeprowadzid żądane operacje wejścia-wyjścia zamknąd plik, gdy uznamy, że praca z nim została zakooczona zlikwidowad strumieo. Przykład

Otwieranie i zamykanie plików void ifstream::open(const char* nazwa, int tryb=ios::in); void ofstream::open(const char* nazwa, int tryb=ios::out); void fstream::open(const char* nazwa, int tryb); są funkcjami składowymi, które otwierają plik o podanej nazwie i wiążą go ze strumieniem w trybie określonym parametrem tryb. Ponowne otwarcie pliku za pomocą obiektu klasy ofstream powoduje usunięcie całej dotychczasowej zawartości pliku. Tryb binarny to tryb, w którym wyłączona jest wszelka interpretacja znaków, nawet znaku kooca pliku.

Otwieranie i zamykanie plików Dostępne tryby otwarcia pliku zdefiniowane są w klasie ios. Są to bitowe flagi, które mogą byd łączone przy użyciu operatora. Zbiera je poniższa tabela: Tryb ios::in ios::out ios::ate ios::app ios::trunc ios::noncreate ios::binary Znaczenie otwórz do czytania otwórz do pisania otwórz i ustaw się na koocu zawartości otwórz do dopisywania otwórz, a jeśli plik istnieje, skasuj starą treśd jeżeli plik nie istnieje operacja kooczy się porażką otwórz w trybie binarnym Przykład

Otwieranie i zamykanie plików Funkcje void ifstream::close(); void ofstream::close(); void fstream::close(); to funkcje składowe, które zamykają plik powiązany z danym strumieniem. Od tego momentu nie można pisad/czytad do/z tego strumienia. Można jednak otworzyd inny plik i powiązad go z tym strumieniem. Jeden strumieo może byd używany wielokrotnie, z wieloma z plikami.

Funkcje pomocnicze przy operacjach na plikach bool good() zwraca wartośd true, jeśli w trakcie pracy strumienia nie wystąpił żaden błąd, w przeciwnym razie zwraca false. bool eof() zwraca wartośd true gdy napotkany został koniec pliku, w przeciwnym razie zwraca false. bool fail() zwraca wartośd true, jeśli w trakcie pracy strumienia pojawił się błąd, ale strumieo ciągle jeszcze nadaje się do pracy. Na przykład oczekiwano w strumieniu liczby, a znaleziono literę. W przeciwnym razie funkcja zwraca false. bool bad() zwraca wartośd true, jeśli strumieo nie nadaje się do pracy. Na przykład chcemy wczytywad z pliku, który nie istnieje. W przeciwnym razie funkcja zwraca false.

Przykład - wczytanie pliku i wypisanie zawartości na ekranie.