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

Podobne dokumenty
Programowanie w językach

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

Wprowadzenie do programowania i programowanie obiektowe

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

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

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

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

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

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

Programowanie i struktury danych

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

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

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

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

Pliki wykład 2. Dorota Pylak

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

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

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

Pliki wykład 2. Dorota Pylak

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

Programowanie Procedurale. Pliki w języku C++

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

Programowanie w językach wysokiego poziomu

1 Strumienie. 2 Pliki. 2.1 Zapis do pliku tekstowego. Programowanie w j zyku C - Adam Krechowicz, Daniel Kaczmarski

Język C++ wykład VIII

Funkcje zawarte w bibliotece < io.h >

Funkcje zawarte w bibliotece < io.h >

Pliki wykład. Dorota Pylak

Wstęp do Programowania 2

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Wykład 9 Pliki cz.3 (getline(string)) Typ wyliczeniowy enum

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

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

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

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

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

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

Wykład 4. Tablice. Pliki

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

Programowanie komputerowe. Zajęcia 1

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Wejście wyjście strumieniowe

Pliki. Operacje na plikach w Pascalu

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

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

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

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

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.

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

Pliki wykład. Dorota Pylak

Pytania sprawdzające wiedzę z programowania C++

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków

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

C++ - [1-3] Debugowanie w Qt Creator

Inicjacja tablicy jednowymiarowej

C++ wprowadzanie zmiennych

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

Struktura pliku projektu Console Application

Podstawy Programowania

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

Podstawy programowania w C++

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

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

Programowanie i struktury danych

1. Wprowadzenie do C/C++

Biblioteka standardowa - operacje wejścia/wyjścia

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

Część 4 życie programu

Program 14. #include <iostream> #include <ctime> using namespace std;

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

Wstęp do programowania w C++

Podstawy i języki programowania

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }

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

Wstęp do programowania

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

Wstęp do programowania

Programowanie obiektowe i C++ dla matematyków

1. Wprowadzenie do C/C++

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

fstream C/C++ #include <fstream> Stream strumień plików std::ifstream C/C++ uchwytem do pliku uchwyt do pliku plik std::ifstream

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

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

Wstęp do programowania

W przypadku STL w specyfikacji nazwy pliku nagłówkowego brak rozszerzenia tj. <string> <string.h> zamiast

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

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

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

Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne

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

Wykład PASCAL - Pliki tekstowe

Zasady programowania Dokumentacja

Podstawy bioinformatyki 2017/18

Wstęp do informatyki- wykład 7

Wstęp do programowania. Wykład 1

void Pobierz(Student &a); void Wypisz(Student a); void Ustaw_zaliczenia(Student t[],int r); void Wypisz_najlepszych(Student t[],int r, float prog);

Transkrypt:

1 Pierwsze kroki w C++ cz.3 2 Obsługa plików Do pracy z plikami zewnętrznymi niezbędna będzie biblioteka fstream. Udostępnia ona programiście narzędzia do zapisu i odczytu plików. 2.1 Typ zmiennej fstream. Przed rozpoczęciem pracy na pliku niezbędne jest stworzenie zmiennej, która pozwoli nam na dokonywanie operacji na wybranym pliku: std:: lub w przypadku korzystania z przestrzeni nazw std: Utworzona w ten sposób zmienna nie wskazuje na żaden plik. W celu przypisania do niej konkretnego pliku należy skorzystać z funkcji open() zawartej w klasie std::fstream: plik.open( "nazwa_pliku.txt", tryb_otwarcia_pliku); Podczas przypisywania pliku do zmiennej należy wyszczególnić jeden, lub więcej trybów otwarcia pliku: ios::app Ustawia wewnętrzny wskaźnik zapisu pliku na jego koniec. Plik otwarty w trybie tylko do zapisu. Dane mogą być zapisywane tylko i wyłącznie na końcu pliku. ios::ate Ustawia wewnętrzny wskaźnik pliku na jego koniec w chwili otwarcia pliku. ios::binary Informacja dla kompilatora, aby dane były traktowane jako strumień danych binarnych. ios::in Zezwala na odczyt danych z pliku. ios::out Zezwala na zapis danych do pliku. ios::trunc Zawartość pliku zostaje wyczyszczona podczas otwarcia. plik.open( "nazwa_pliku.txt", ios::in ios::out ); 1

Po zakończeniu operacji z plikiem należy go zamknąć. W tym celu wykorzystana zostanie funkcja close(): plik.close(); Przykład: #include <iostream> using namespace std; int main() { plik.open( "nazwa_pliku.txt", ios::in ios::out ); if( plik.good() == true ) { cout << "Uzyskano dostep do pliku!" << endl; plik.close(); else cout << "Brak dostepu do pliku " << endl; return( 0 ); 2.2 Odczytywanie danych z pliku. Istnieje kilka metod na odczytywanie danych z pliku. 2.2.1 Odczyt danych za pomocą strumienia. Odczyt danych za pomocą strumienia jest analogiczny do działania std::cin». Dane odczytane w ten sposób są zawsze traktowane jako tekst. Niestety funkcja ta nie pozwoli na odczytanie informacji o białych znakach (podobnie jak w rozdziale 2). nazwa_zmiennej_plikowej >> zmienna_do_ktorej_zapisuje_dane; plik >> dane; 2.2.2 Odczyt danych wierszami. Do odczytu danych wierszami posłuży nam już znana z rozdziału 2 funkcja getline(). 2

getline( plik, dane); Dane wczytane za pomocą funkcji getline() są zawsze traktowane jako tekst. 2.2.3 Odczyt danych blokami. Do odczytu danych blokami wykorzystana zostanie funkcja read(). Dane wczytywane przez nią mogą być wczytane jako tekst, lub jako dane binarne (włączając tryb ios::bin). W poniższym przykładzie możemy odczytać z pliku 1024 znaki do tablicy buforowej temp. char temp[ 1024 ]; plik.read( temp, 1024 ); 2.3 Zapis danych do pliku Zapisywanie danych do pliku działa równie prosto co ich doczytywanie z pliku. Należy jednak pamiętać, że proces zapisu działa specyficznie. Możliwe jest dopisywanie danych, jeżeli znajdujemy się na końcu pliku, lub nadpisać dane, gdy jesteśmy w innym miejscu niż EOF (end of file). 2.3.1 Zapis danych za pomocą strumienia. Ten sposób zapisu działa analogicznie do std::cout«, z tym, że tekst przesyłany jest do pliku, a nie na urządzenie peryferyjne. nazwa_zmiennej_plikowej << zmienna_z_ktorej_zapisuje_dane; plik << dane; 2.3.2 Zapis danych blokami. Do zapisu danych blokami wykorzystana zostanie funkcja write(). W poniższym przykładzie zmienna tekst (typu string) pełni rolę bufora (&tekst[0] to stworzenie wskaźnika do pierwszego elementu zmiennej) natomiast tekst.length() mówi kompilatorowi, żeby skopiował ilość danych równą długości bufora tekst. getline( cin, tekst ); plik.write( & tekst[ 0 ], tekst.length() ); 3

Przykład: #include <iostream> using namespace std; int main() { plik.open( "plik.txt", ios::in ios::out ); if( plik.good() == true ) { cout << "Uzyskano dostep do pliku!" << endl; //tu nalezy przeprowadzac operacje na pliku (zapis/odczyt etc.) //zapis do pliku plik << "Ten tekst pojawi sie w naszym pliku" << endl; string napis, tekst; tekst="to jest string, ktory przeniesie sie do pliku\n"; plik << tekst; cout<<"podaj dowolny string, zostanie on zapisany w " <<" pliku"<<endl; getline(cin, napis); plik.write(&napis[0],napis.length()); //odczyt z pliku //przeniesienie kursora o 3 bajty w strone poczatku pliku plik.seekg( + 3, std::ios_base::beg); string napis1, napis2; plik >> napis1; cout << "Pierwsza linijka pliku:" << endl << napis1 << endl; getline(plik, napis2); cout << "Kolejna linijka pliku: " << endl << napis2 << endl; char temp [10]; plik.read(temp, 10); cout << "kolejna linijka pliku: " << endl; for(int i=0; i<10; i++) cout <<temp[i]; cout << endl; 4

plik.close(); else cout << "Brak dostepu do pliku " << endl; return( 0 ); Na potrzeby powyższego przykładu należy stworzyć w katalogu z plikiem *.cpp programu plik tekstowy: plik.txt. Zadanie W oparciu o zagadnienia wymienione w niniejszej instrukcji proszę udoskonalić prosty interface użytkowy automatu do sprzedaży przekąsek i napoi stworzony na poprzednich zajęciach. Wymogi dotyczące programu: 1. Program wczytuje listę produktów wraz z ilością dostępnych sztuk, z zewnętrznego pliku tekstowego lub binarnego podczas uruchomienia, oraz za każdym razem, gdy lista jest odświeżana. 2. Po dokonaniu zakupu, liczba produktów jest odświeżana i zapisywana do pliku zewnętrznego. 5