Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

22.8.2015C++ Přednáška č.21 Jazyk C++ Přednáška č.2 Proudy, manipulátory Práce se soubory.

Podobné prezentace


Prezentace na téma: "22.8.2015C++ Přednáška č.21 Jazyk C++ Přednáška č.2 Proudy, manipulátory Práce se soubory."— Transkript prezentace:

1 C++ Přednáška č.21 Jazyk C++ Přednáška č.2 Proudy, manipulátory Práce se soubory

2 C++ Přednáška č.22 Manipulátory Bez parametrů (mohou být i jako bity v flags), patří do virtuální třídy ios S parametry (nutný iomanip)

3 C++ Přednáška č.23 ios::flags Jsou to bity enum (ios enumerators) které lze kombinovat bitovou operací OR ( | ). Je to členská funkce std Flags parameter musí mít jednu z následujících hodnot:

4 C++ Přednáška č.24 ios::flags (pokrač.) ios::skipws Přeskočit mezeru ve vstupním proudu ios::left Zarovnat vlevo s použitím výplňových znaků ios::right Zarovnat vpravo s použitím výplňových znaků ios::internal Add fill characters after any leading sign or base indication, but before the value. ios::dec Číselný základ bude 10 (implicitní) ios::oct Číselný základ bude 8 (octal). ios::hex Číselný základ bude 16 (hexadecimal). ios::showbase Použít předponu 0 nebo 0x u oct/hex čísel ios::showpoint Použít desetinný zápis ios::uppercase V číslech používat velká písmena (u oct, hex, exponenty) ios::showpos použít znak + u kladných čísel. ios::scientific Čísla v plovoucí řádové čárce zobrazit ve vědeckém zápisu. ios::fixed Použít pevný formát u čísel v plovoucí řádové čárce. ios::unitbuf Cause ostream::osfx to flush the stream after each insertion. By default, cerr is unit buffered. ios::stdio Cause ostream::osfx to flush stdout and stderr after each insertion.

5 C++ Přednáška č.25 #include #pragma hdrstop using namespace std; // #pragma argsused int main(int argc, char* argv[]) { int i=234; cout.setf(ios::showbase); // zaradi ox u hex a 0 u oct cout << hex << i << " = " << 123 << oct << 80 << endl; cout.setf(ios::left | ios::uppercase); // zarovnani vlevo + velka pismena cout.width(20); // cirka 20 - prvni cislo cout << hex << i << " = " << 123 << " --- " << oct << 80 << "<<" << endl; while(!kbhit()); return 0; }

6 C++ Přednáška č.26 Funkce cout Další členské funkce cout.width(25); //šířka datového výstupu cout.put(znak); // výstup jediného znaku cout.write(něco); // jako operátor << cout.fill(znak); // výplňový znak

7 C++ Přednáška č.27 Příklad na funkce cout cout "; cout.width(25); cout << 123 << "< Konec\n"; cout "; cout.width(25); cout.fill('*'); // platí pro 1 následující údaj cout << 123 << "< Konec\n"; Vytiskne: Zacatek > 123< Konec Zacatek >**************123< Konec

8 C++ Přednáška č.28 Seznam manipulátorů flush – vyprázdní výst. buffer endl – konec řádku a vyprázdní buffer oct – výstup bude osmičkový dec – výstup bude dekadický hex – výstup bude hexa

9 C++ Přednáška č.29 manipulátory, které vyžadují iomanip setbase(základ) – nastavuje soustavu výstupu (0,10 – dec; 8- oct; 16 – hex) setw(šířka) – minim. šířka položky setfill(znak) – vyplňovací znak při definované šířce setprecision(přesnost) – přesnost u čísel v pohybl. řádové čárce

10 C++ Přednáška č.210 manipulátory, které vyžadují iomanip (pokr.) setiosflags(příznak) – nastavuje jeden nebo více příznaků resetiosflags(příznak) – resetuje jeden nebo více příznaků

11 C++ Přednáška č.211 Příznaky ios v manipulátorech setiosflags a re setiosflags ios::left zarovná výstup k zadané šířce doleva ios::right zarovná výstup k zadané šířce doprava ios::interval znaménko je zarovnané doleva, číslo doprava ios::dec desítkový výstup ios::oct osmičkový výstup

12 C++ Přednáška č.212 Příznaky ios v manipulátorech setiosflags a resetiosflags (pokr.1) ios::hex hexadecimální výstup ios::showbase přidá 0x k hexa a 0 k osmičkovým výstupům ios::showpoint přidá koncové nuly podle požadované přesnosti ios::uppercase šestnácková čísla a vědecký zápis používají velká písmena

13 C++ Přednáška č.213 Příznaky ios v manipulátorech setiosflags a resetiosflags (pokr.2) ios::showpos u kladnýchčísel bude + ios::scientific hodnota s pohyblivou des. čárkou se zobrazuje ve vědeckém zápisu (pouze exponent, nemusí být dělit.3) ios::fixed hodnota s pohyblivou des. čárkou se zobrazuje v desetinném zápisu Existují další, popis hledat s couboru ios a v dokumentaci překladače.

14 C++ Přednáška č.214 Funkce pro cin cin.get() – nemá parametr, nelze spojovat cin.get(znak) – lze spojovat

15 C++ Přednáška č.215 Příklad int main() { char znak; while ( (znak = std::cin.get()) != EOF) { std::cout << "znak: " << znak << std::endl; } std::cout << "\nHotovo!\n"; return 0; }

16 C++ Přednáška č.216 Výsledek příkladu: Ahoj - to jsme napsali na klávesnici znak: A znak: h znak: o znak: j ^Z - tím musíme ukončit

17 C++ Přednáška č.217 Další fukce cin cin.get(buff, délka) – ukonč. znak zůstává v zásobníku cin.getline(buff,délka) – ukonč. znak se zahazuje; načte celý řádek včetně mezer

18 C++ Přednáška č.218 Příklad cin.get(), cin.getline() #include using namespace std; int main() { char retezecJedna[256]; char retezecDva[256]; char retezecTri[256];

19 C++ Přednáška č.219 pokr. cout << "Zadejte prvni retezec: "; cin.getline(retezecJedna,256); cout << "retezecJedna: " << retezecJedna << endl; cout << "Zadejte druhy retezec: "; cin >> retezecDva; cout << "retezecDva: " << retezecDva << endl; cout << "Zadejte treti retezec: "; cin.getline(retezecTri,256); cout << "retezecTri: " << retezecTri << endl; return 0; }

20 C++ Přednáška č.220 Výsledek: Zadejte první retezec: jedna dva tri retezecJedna: jedna dva tri Zadejte druhy retezec: ctyry pet šest retezecDva: ctyry Zadejte treti retezec: retezecTri: pet sest

21 C++ Přednáška č.221 Funkce cin.ignore() cin.ignore(maxpočet,’\n’) – zahodí maximálně určený počet znaků až do konce řádku

22 C++ Přednáška č.222 funkce peek() a putback() cin.peek() – načte znak, ale ponechá jej ve vstupním proudu (můžeme jej načíst znovu) cin.putback() – vloží znak do vstupního proudu

23 C++ Přednáška č.223 Příklad int main() { char znak; cout << "Zadejte vetu: "; while ( cin.get(znak) ) { if (znak == '!') // vymění znak ! za $ cin.putback('$'); else cout << znak; while (cin.peek() == '#') // na4te znak, ale ponechá jej v proudu cin.ignore(1,'#'); } return 0; }

24 C++ Přednáška č.224 Výsledek: Zadejte vetu: Prave!ted#je!cas#pobavit!se# Prave$tedje$caspobavit$se$ (Vymění vykřičníky za dolar a vyhodí #)

25 C++ Přednáška č.225 Práce se soubory knihovna ofstream fout(nazevSouboru);//otevřít pro zápis ifstream fin(nazevSouboru); //otevření pro čtení zavírání: fout.close(); fin.close();

26 C++ Přednáška č.226 Funkce pro práci se soubory fout() - jako cout, ale do souboru fin.get(znak) fin.ignore(1,'\n'); fin.getline(buffer,255); fin.get(znak)

27 C++ Přednáška č.227 Příklad práce se soubory #include using namespace std; int main() { char nazevSouboru[80]; char buffer[255]; // pro zadání uživatele cout << "Nazev souboru: "; cin >> nazevSouboru; ofstream fout(nazevSouboru); // otevřít pro zápis fout << "Tento radek se primo zapise do souboru...\n"; cout << "Zadejte text souboru: ";

28 C++ Přednáška č.228 cin.ignore(1,'\n'); // přeskočení znaku nového řádku za názvem souboru cin.getline(buffer,255); // převzetí zadání uživatele fout << buffer << "\n"; // a jeho zápis do souboru fout.close(); // zavření souboru a příprava pro otevření ifstream fin(nazevSouboru); // otevření souboru pro čtení cout << "Zde mame obsah souboru:\n"; char znak; while (fin.get(znak)) cout << znak; cout << "\n***Konec obsahu souboru.***\n"; fin.close(); // pozornost se vždy vyplatí return 0; }

29 C++ Přednáška č.229 Funkce pro práci se soubory fout() - jako cout, ale do souboru fin.get(znak) fin.ignore(1,'\n'); fin.getline(buffer,255); fin.get(znak)


Stáhnout ppt "22.8.2015C++ Přednáška č.21 Jazyk C++ Přednáška č.2 Proudy, manipulátory Práce se soubory."

Podobné prezentace


Reklamy Google