Vstupní a vstupní proudy v C++



Podobné dokumenty
18. února 2015, Brno Připravil: David Procházka. Programovací jazyk C++

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory

Prostory jmen. při vkládání několika hlavičkových souborů může vzniknout kolize. logika.h const int x=5; typedef struct {...

Pokročilé programování v jazyce C pro chemiky (C3220) Vstup a výstup v C++

Datové proudy objektový vstup a výstup v C++

PB161 Programování v jazyce C++ Přednáška 5

Množina čísel int stl-set-int.cpp

<surface name="pozadi" file="obrazky/pozadi/pozadi.png"/> ****************************************************************************

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. November 16, 2017

Programování v C++ První kroky

PROGRAMOVÁNÍ V C++ URČENO PRO VZDĚLÁVÁNÍ V AKREDITOVANÝCH STUDIJNÍCH PROGRAMECH ROSTISLAV FOJTÍK

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

Hotelová škola, Obchodní akademie a Střední průmyslová škola Teplice,Benešovo náměstí 1, příspěvková organizace

Datové typy pro reálná čísla

8. Načítání a zápis PDB souboru

Standardní algoritmy v C++.

Zpracoval:

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

Jazyk C++, některá rozšíření oproti C

Více o konstruktorech a destruktorech

přetížení operátorů (o)

Základy C++ I. Jan Hnilica Počítačové modelování 18

PB přednáška (26. října 2015)

Vector datový kontejner v C++.

PROGRAMOVÁNÍ V C++ CVIČENÍ

Objekty a třídy. Procedurální a objektově orientované programování. V této kapitole se naučíte: Procedurální a objektově orientované programování

IUJCE 07/08 Přednáška č. 1

Úvod do programování. Lekce 1

Vstupy a výstupy v jazyce C++

PB161 Programování v jazyce C++ Přednáška 6

Objektov orientované programování. C++ Akademie SH. 7. Objektov orientované programování. Michal Kvasni ka. Za áte níci C++ 2.

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

PB přednáška (19. října 2015)

Programovací jazyk C++ Cvičení 2

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

PB161 Programování v jazyce C++ Přednáška 6

Zpracoval:

map, multimap - Asociativní pole v C++.

Digitální učební materiál

Jazyk C++ II. Výjimky

Funkční objekty v C++.

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Kolekce ArrayList. Deklarace proměnných. Import. Vytvoření prázdné kolekce. napsal Pajclín

Šablony, kontejnery a iterátory

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí

Programování v C++ 1, 6. cvičení

Lekce 9 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

Prostory jmen. #include<iostream.h> namespace RadimuvProstor { int secti(int a, int b); class Trida { private: int Atribut; public: void metoda();

PREPROCESOR POKRAČOVÁNÍ

PB161 Programování v jazyce C++ Přednáška 8

Úvod do programovacích jazyků (Java)

Programování v C++ 1, 5. cvičení

Šablony, kontejnery a iterátory

Mělká a hluboká kopie

Úvod do programování. Lekce 3

10 Práce s řetězci - pokračování

Základy programování (IZP)

VISUAL BASIC. Práce se soubory

Množina v C++ (set, multiset).

PB161 Programování v jazyku C++

Iterátory v C++. int pole[20]; for (int *temp = pole, temp!= &pole[20]; temp++) { *temp = 0;

Operační systémy. Cvičení 4: Programování v C pod Unixem

Klíčové pojmy: Cyklus, řídící proměnná, inicializace, test podmínky, přerušení cyklu, vnořování cyklů.

Konstruktory a destruktory

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Programování v C++ 1, 1. cvičení

Programování v C++ 1, 14. cvičení

Textové soubory. alg9 1

Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++

Abstraktní třídy, polymorfní struktury

Polymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března

Datové typy pro reálná čísla

SYSTÉMOVÉ PROGRAMOVÁNÍ Cvičení č.1

Dědičnost. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 23.března

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Informatika pro moderní fyziky (2) základy Ruby, zpracování textu

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Soubor jako posloupnost bytů

Struktury, funkce, reference

Programování C++ Lukáš Tomášek. verze

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

Práce s binárními soubory. Základy programování 2 Tomáš Kühr

Práce se soubory. Základy programování 2 Tomáš Kühr

LED_007.c Strana: 1/5 C:\Michal\AVR\Výukové programy\archiv\ Poslední změna: :01:48

Algoritmizace a programování

IUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje

Architektura COM. Historie Component Object Model (COM) Komunikace s komponentami Rozhraní komponent COM komponenty v.net.

: Teoretická informatika(ti)

Programování 2 (NMIN102) Soubory. RNDr. Michal Žemlička, Ph.D.

Práce se soubory v Javě

Standardní algoritmy vyhledávací.

Cvičení 9 - Monitory. monitor m; var proměnné... procedure p; begin... end; begin inicializace; end;

Úvod do programování 8. hodina

Transkript:

Programovací jazyk C++ MZLU - PEF - Ústav informatiky 11. října 2007

Vstup na terminál a čtení z něj Používá se knihovna iostream. Pro výstup lze použít standardní výstup cout. nebo chybový výstup cerr. Pro načtení vstupního řetězce standardní vstup cin. #include <iostream> int main(void){ int cislo; cout << "Napis cislo" << endl; cin >> cislo; cout << "Napsal jsi: " << cislo << endl; cerr << "Nastala neznama chyba" << endl; return 0; }

Přesměrování proudů na úrovni OS přesměruj výpis příkazu do souboru ls>jmenosouboru.txt přesměruj standardní výstup program 1>jmenoSouboru.txt přesměruj chybový výstup program 2>jmenoSouboru.txt zahod chybový výstup program 2>\dev\null přesměruj chybový výstup na standardní 2>&1

Parametry funkce main Programu je občas potřeba předat parametry (format c:). V C++ musíme deklarovat parametry funkce main následujícím způsobem: int main(int argc, char *argv[]) { cout << "pocet parametru: " << argc << endl; for (int i=0; i<argc; i++) cout << argv[i] << " "; cout << endl;... Promn argc vrací počet pametrů, které byly předány +1. Promn argv je pole řetězeců, kde každá buňka obsahuje parametr. K parametrům přistupujeme klasicky argv[1], argv[2],... Parametry jsou číslovány od jedničky! argv[0] je jméno programu.

Manipulátory nástroje pro práci s proudem Pro manipulátory s parametrem je potřeba použít knihovnu iomanip. endl konec řádku a vyprázdni buffer. flush vyprázdni buffer. dec, hex, oct výpis čísel v destkové, šestnáctkové, osmičkové soustavě. setw(x) počet znaků na které bude zarovnáno. setfill("x") jakým znakem bude vyplňováno. #include <iostream> #include <iomanip> int main(void) { int c = 1000, b = 9; cout<<setw(3)<<"b="<<b<<endl<<"c="<<c<<endl; cout<<setw(3)<<setfill( @ )<<hex<<"c="<<c;...

GetLine načtení celé řádky Čte celé řádky, ne jen do prvního bílého znaku. Má 3 parametry: řetzec, maximální počet znaků a ukončovací znak řádku. Ukončovací znak je implicitně nastaven na \n. #include <iostream> int main(void) { char s[100]; cout << "Napis retzec" << endl; cin.getline(s,99); cout << "Napsal jsi " << s <<endl; return 0; }

Zápis do souboru Pracujeme také s proudy i metody čtení jsou stejné. Musíme načíst knihovni fstream. Výstupní proud pak deklarujeme jako ofstream. #include <iostream> #include <fstream> int main(){ ofstream out; out.open("temp.txt"); } for(int i=1;i<=10;i++) { out << i << endl; }

Kontrola zápisu do souboru Vždy je vhodné kontrolovat, zda se povedlo soubor otevřít (vytvořit). #include <iostream> #include <fstream> int main(){ ofstream out; out.open("pokus.txt"); if (out.is_open()) { out << "radka textu"; out.close(); } else cout << "Soubor se nepodarilo nacist..."; }

Čtení ze souboru Opět musíme načíst knihovni fstream. Vstupní proud pak deklarujeme jako ifstream. #include <iostream> #include <fstream> int main(){ string slovo; ifstream in; in.open("temp.txt"); if (in.is_open()) { while(in >> slovo) cout << slovo << " "; cout << endl; } }

Triviální kopie souboru po znacích int main() { ifstream from("soubor1.txt"); ofstream to("soubor2.txt"); } char ch; while(from.get(ch)) to.put(ch); from.close(); to.close();

Způsoby čtení ze souboru char znak; char text[50]; ifstream in; in.open("pokus.txt"); in.get(znak); in >> text; in.getline(text,50); in.read(text, 50); in.close(); //precte znak //precte slovo //precte radek //precte zvoleny pocet znaku while (in.get(znak)){} //dokud jsou v souboru znaky

Režimy práce se souborem Slouží k nastavení režimu čtení nebo zápisu. Příklad syntaxe: ofstream out; out.open("pokus.txt",ios_base::app...); in otevře soubor pro čtení (výchozí pro čtení, není nutné psát). out otevře soubor pro zápis (výchozí pro zápis, není nutné psát). ate po otevření hledej konec souboru. app přidej text na konec souboru. trunc zkrat existující soubor na nulovou délku. binary binární režim.

Binární soubory Nedají se normálně číst, zapisují data ve formátu jako jsou v paměti. Problém s přenosem těchto souborů mezi platformami. Kladem je vyšší rychlost práce.

Zápis do binárního souboru Pro zápis do binárního souboru lze použít nap. funkci write. Kopíruje určitý počet bajtů (znaků) od pozice, na kterou ukazuje ukazatel. int pole[4]={1,2,3,4}; ofstream out; out.open("vystup.dat", ios_base::binary); if (out.is_open()) { out.write((char *)pole, sizeof(pole)); // pretypovani out.close(); } else cout << "Nepodarilo se otevrit soubor!" << endl;

čtení z binárního souboru Používá se funkce read: read (const char *buf, streamsize poet); char pole[4]; ifstream in; in.open("vstup.dat",ios_base::binary); if (out.is_open()) { in.read((char *)pole, sizeof(pole)); //pretypovani in.close(); } else cout << "Nepodarilo se otevrit soubor! \n";

Skoky v souboru seekg(position) skok na pozici ve výstupním proudu. seekp(position) skok na pozici ve vstupním proudu. seekg(skok, pozice) skok o zadaný počet bytů (vst.). seekp(skok, pozice) skok o zadaný počet bytů (vyst.). Identifiktory pozice: beg začátek souboru. end konec souboru. cur aktuální pozice. Příklad: in.seekg(20, ios_base::beg); //20 bajtu od zacatku

XML soubory XML je jednoznačný trend v oblasti přenosu a ukládní dat. Proč je XML tak zajímavé/používané? <?xml version="1.0" encoding="iso-8859-1"?> <notes> <note> <to>tove</to> <from>jani</from> <heading>reminder</heading> <body>don t forget me this weekend!</body> </note> <note>... </note> </notes>

XML soubory Existuje řada metod pro zpracování XML (SAX, SAX2, DOM, XMLWriter,...). Nejvznamnějšími z těchto metod jsou verze SAX a DOM parserů. Pro C/C++ existují knihovny, které umožňují automatické zpracování XML: libxml2, Xerxes, expat, Arabica, aj. (http://www.ibm.com/developerworks/xml/library/ x-ctlbx.html) Osobně považuji práci s XML v C++ za méně komfortní.