C++ programavimo kalba

Similar documents
C programavimo kalba. 3 paskaita (Sąlygos ir ciklo operatoriai, funkcija scanf() )

CS2141 Software Development using C/C++ Stream I/O

2017 m. pagrindinės sesijos informacinių technologijų valstybinio brandos egzamino programavimo užduoties galimi sprendimai

Strings and Streams. Professor Hugh C. Lauer CS-2303, System Programming Concepts

C++ Programming Lecture 10 File Processing

Convenient way to deal large quantities of data. Store data permanently (until file is deleted).

JAVA pagrindai Lek. Liudas Drejeris

CSC 138 Structured Programming CHAPTER 4: TEXT FILE [PART 1]

File I/O Christian Schumacher, Info1 D-MAVT 2013

Unit-V File operations

Object Oriented Programming Using C++ UNIT-3 I/O Streams

I/O Streams and Standard I/O Devices (cont d.)

Chapter 14 Sequential Access Files

C++ programavimo kalba

Programming II with C++ (CSNB244) Lab 10. Topics: Files and Stream

Fig: iostream class hierarchy

UEE1303(1070) S 12 Object-Oriented Programming in C++

File I/O. File Names and Types. I/O Streams. Stream Extraction and Insertion. A file name should reflect its contents

Developed By : Ms. K. M. Sanghavi

C++ files and streams. Lec 28-31

Consider the following example where a base class has been derived by other two classes:

Chapte t r r 9

This chapter introduces the notion of namespace. We also describe how to manage input and output with C++ commands via the terminal or files.

C++ programavimo kalba. Konstruktorius, destruktorius, klasių metodų modifikatoriai, objektų masyvai (4 paskaita)

Advanced I/O Concepts

Writing a Good Program. 7. Stream I/O

Input and Output. Data Processing Course, I. Hrivnacova, IPN Orsay

Week 3: File I/O and Formatting 3.7 Formatting Output

System Design and Programming II

C++ programavimo kalba

CS201 Solved MCQs.

C++ does not, as a part of the language, define how data are sent out and read into the program

10/23/02 21:20:33 IO_Examples

UNIT V FILE HANDLING

Simboliai ir simbolių eilutės 2 val. Standartinės procedūros ir funkcijos darbui su simbolių eilutėmis

IS 0020 Program Design and Software Tools

Object Oriented Programming In C++

Streams in C++ Stream concept. Reference information. Stream type declarations

Input/output. Remember std::ostream? std::istream std::ostream. std::ostream cin std::istream. namespace std { class ostream { /*...

Streams. Rupesh Nasre.

Chapter-12 DATA FILE HANDLING

cs3157: c++ lecture #2 (mon-11-apr-2005) chronology of some programming languages... C++ vs Java identifiers.

Fall 2017 CISC/CMPE320 9/27/2017

Fundamentals of Programming Session 27

Lecture 9. Introduction

Chapter 12 - C++ Stream Input/Output

Input and Output File (Files and Stream )

The C++ Language. Output. Input and Output. Another type supplied by C++ Very complex, made up of several simple types.

Introduction to Standard C++ Console I/O. C++ Object Oriented Programming Pei-yih Ting NTOU CS

C++ programavimo kalba

Objects and streams and files CS427: Elements of Software Engineering

Piyush Kumar. input data. both cout and cin are data objects and are defined as classes ( type istream ) class

Chapter 8 File Processing

Chapter 3 - Notes Input/Output

More File Operations. Lecture 17 COP 3014 Spring april 18, 2018

File handling Basics. Lecture 7

Today in CS162. External Files. What is an external file? How do we save data in a file? CS162 External Data Files 1

Chapter 12. Streams and File I/O. Copyright 2010 Pearson Addison-Wesley. All rights reserved

Page 1

Random File Access. 1. Random File Access

COMP322 - Introduction to C++

Chapter 21 - C++ Stream Input/Output

BITG 1113: Files and Stream LECTURE 10

by Pearson Education, Inc. All Rights Reserved. 2

Fundamentals of Programming Session 25

Kodėl programą sudaro daug failų? Sukurtos tipinės funkcijų galėtų būti panaudojamos dar kartą; Sudaroma aiškesnė programos struktūra; Sudaroma galimy

Formatting outputs String data type Interactive inputs File manipulators. Access to a library that defines 3. instead, a library provides input

After going through this lesson, you would be able to: store data in a file. access data record by record from the file. move pointer within the file

Intermediate Programming Methodologies in C++ CIS22B. Joe Bentley

Kas yra masyvas? Skaičių masyvo A reikšmės: Elementų indeksai (numeriai): Užrašymas Turbo Paskaliu: A[1] A[2] A[3] A[4] A[5]

Chapter 12. Streams and File I/O. Copyright 2016 Pearson, Inc. All rights reserved.

[CSE10200] Programming Basis ( 프로그래밍기초 ) Chapter 7. Seungkyu Lee. Assistant Professor, Dept. of Computer Engineering Kyung Hee University

Introduction to C++ (Extensions to C)

C++ Binary File I/O. C++ file input and output are typically achieved by using an object of one of the following classes:

Basic function of I/O system basics & File Processing

Chapter 21 - C++ Stream Input/Output

Chapter 6. I/O Streams as an Introduction to Objects and Classes. Copyright 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley

UNIT V FILE HANDLING

Come to the TypeScript

C++ Input/Output: Streams

Parengė ITMM Artūras Šakalys 1

Generate error the C++ way

EP241 Computing Programming

PHP PROGRAMOS EIGOS VYKDYMO VALDYMAS

Streams contd. Text: Chapter12, Big C++

Chapter Overview. I/O Streams as an Introduction to Objects and Classes. I/O Streams. Streams and Basic File I/O. Objects

for (int i = 1; i <= 3; i++) { do { cout << "Enter a positive integer: "; cin >> n;

COMP322 - Introduction to C++

C++ Input/Output Chapter 4 Topics

ios ifstream fstream

Kapil Sehgal PGT Computer. Science Ankleshwar Gujarat Ch - 7. Data File Handling

Developed By : Ms. K. M. Sanghavi

Struktūrų sintaksė Struktūra tai vienodo arba skirtingo tipo kintamųjų rinkinys. Sintaksė: struct vardas { ; type1 var1; type2 var2;... typen varn; //

Modern C++ for Computer Vision and Image Processing. Igor Bogoslavskyi

CS3157: Advanced Programming. Outline

Advanced File Operations. Review of Files. Declaration Opening Using Closing. CS SJAllan Chapter 12 2

QUESTION BANK. SUBJECT CODE / Name: CS2311 OBJECT ORIENTED PROGRAMMING

Module 11 The C++ I/O System

Study Material for Class XII. Data File Handling

Setting Justification

Transcription:

C++ programavimo kalba I/O biblioteka (2 paskaita)

I/O operatoriai Išvedimo << Įvedimo >> #include <iostream> using namespace std; void main() { float A = 18.236; cout << "1. A=" << A << endl; cout << "2. A=" << A*2.0 << endl; 2

Srauto formatavimo manipuliatoriai setw (int n) setprecision (int n) setfill(char c) n lauko plotis simboliais, n skaitmenų skaičius, c tai simblis, kuriuo užpildomi tarpai. Jei setw() nurodyto lauko dydžio skaičiui nepakanka, manipuliatorius ignoruojamas. setw() galioja artimiausiai išvedamai reikšmei, o setprecission() ir setfill() iki naujo nurodymo. #include <iostream.h> #include <iomanip.h> void main() { float A = 18.236; cout << "1. A=" << setw(9) << A << endl; cout << "2. A=" << setprecision(3) << A << endl; cout << "3. A= << setw(10) << setprecision(5) << A <<endl; A = 123.45678; cout << "4. A=" << A << endl; 3

Srauto formatavimo funkcijos Klasės ostream metodas width(int) skirtas nurodyti išvedamo sraute duomenų laukams. Galioja artimiausiam dydžiui. Tai setw() analogas. #include <iostream> #include <iomanip> void main() { for(int i=2; i<6; i++) { cout.width(3); cout << "i="; cout.width(i); cout << i << endl; 4

Srauto formatavimo funkcijos Metodas fill(int) leidžia pakeisti užpildymo simbolį norimu (nurodomas kaip argumentas). #include <iomanip.h> #include <iostream.h> void main() { cout.fill('.'); for(int i=2; i < 6; i++) { cout << "i="; cout.width(i); cout << i << endl; 5

ostream metodai (funkcijos) Metodas put() skirtas vienam simboliui išvesti ekrane. Sintaksė: ostream::put( char ch ); #include <iostream> using namespace std; void main() { char zodis[ ] = "Katinas"; for(int i=0; zodis[ i ]; i++) cout.put(zodis[i]); cout << endl; 6

istream metodai (funkcijos) get() tai istream klasės metodai, skirti neformatuotam nuskaitymui iš srauto. Galimi sintaksės variantai: int get() - skirtas vieno simbolio nuskaitymui iš srauto; istream:: get( char* pch, int ncount, char delim = '\n' ); Nuskaito eilutę iš ncount simbolių arba kol bus sutiktas delim istream:: get( char* pch, int ncount ); Nuskaito eilutę iš ncount simbolių 7

Pavyzdžiai #include <iostream> #include <iomanip> using namespace std; void main() { char sim; cout << "Ar dar dirbsite?( T/N ): "; do { cin>>ws; // white space skipping manipulator sim = cin.get(); sim = toupper(sim); if (sim!= T && sim!= N ) { cout << Ivestas neteisingas simbolis t.y.: " << sim<<endl ; cout << Kartokite dar Ar dar dirbsite?( T/N ): > ; while( (sim!= 'T') && (sim!= 'N') ); 8

Pavyzdžiai #include <iostream> #include <fstream> using namespace std; void main () { char c, str[256]; ifstream is; cout << Iveskite failo pavadinima: "; cin.get (str,256); is.open (str); // failo atidarymas while ( is.good() ) // ciklas vykdomas, kol įmanoma nuskaityti { c = is.get(); // nuskaitome simbolį iš failo cout << c; is.close(); // uždarome failą 9

istream metodai (funkcijos) Įvedimo klasėje metodas getline() skirtas vienos eilutėsįvedimui klaviatūra. Sintaksė: getline( char* pch, int ncount, char delim = '\n' ); Paprastai įvedama eilutė iki pirmojo tarpo simbolio arba iki galo, jeigu tarpo simbolio nebuvo. Panaudoję getline() metodą galima įvesti norimą simbolių skaičių (nurododant skaičių). Jeigu tiek simbolių nebuvo, įvedami visi simboliai iki eilutės galo. Įvedama eilutė visuomet papildoma nuliniu ASCII simboliu (\0). 10

Pavyzdys #include <iostream> using namespace std; void main() { char A[30]; int n; cout << "Iveskite eilute:\n"; cin >> A; cout << "Eilute: *" << A << "*\n"; cin.getline(a, 12); cout << "Eilute: *" << A << "*\n"; cin.getline(a, sizeof(a)); cout << "Eilute: *" << A << "*\n"; n = cin.gcount(); cout << "n= " << n << endl; // Pirmasis eilutės žodis //Vienuolika simbolių ir '\0' // Iki galo arba tiek, kiek telpa // Eilutės ilgis su nuliniu simboliu 11

istream Įvedimo klasėje metodas getline() gali turėti trečią parametrą, nurodantį simbolį, kuriuo baigiamas įvedimas. Pavyzdyje parašyta raidė Z. Jeigu įvedamoje eilutėje jos nebus, tuomet bus įvedami visi eilutės simboliai arba tik tiek, kiek nurodyta, jeigu eilutėje jų yra daugiau. main() { char A[30]; cout << "Iveskite eilute:\n"; cin.getline(a, sizeof(a), 'Z'); cout << "Eilute: *" << A << "*\n"; 12

Pavyzdys #include <iostream> using namespace std; int main () { char name[256], title[256]; cout << Ivesk savo varda: "; cin.getline (name,256); cout << Ivesk megstamo filmo pavadinima: "; cin.getline (title,256); cout << name << " megsta filma: " << title; return 0; 13

ifstream, ofstream Įvedimo srautu iš failo klasė ifstream ir išvedimo srautu į failą klasė ofstream aprašytos faile fstream.h. Tai išvestinės klasės iš istream ir ostream. Galima sukurti objektus, kurie nukreipiaįvedimo/išvedimo srautus iš/į failus. Galioja operatoriai >> ir <<. Konstruktoriaus parametru yra failo vardas. Failo uždarymui naudojamas metodas close(). 14

Pavyzdys #include <iostream> #include <fstream> using namespace std; main() { ofstream rezultatai ("Rez58.txt"); ifstream duomenys ("Duom58.txt"); int A; duomenys >> A; cout << " A= " << A << endl; rezultatai << A; duomenys.close(); rezultatai.close(); 15

Failų atidarymo rėžimai Rėžimas ios::in ios::out ios::ate ios::app ios::trunc ios::binary Failas atidaromas skaitymui Failas atidaromas rašymui Failas atidaromas rašymui, išvedimas pradedamas nuo failo galo (at end) Failas atidaromas papildymui Naikinamas failo turinys Aprašymas Failas atidaromas dvejatainiame režime 16

Srautų sintaksė ifstream (const char *name, ios::openmode = ios::in); (nuskaitymo iš failo srautas) ofstream (const char *name, ios::openmode = ios::out ios::trunc); (rašymo į failą srautas) fstream (const char *name, ios::openmode = ios::in ios::out); (rašymo ir skaitymo iš/į failą srautas) 17

Pavyzdžiai #include <fstream> using namespace std; void main() { ofstream fs; fs.open( File.dat, ios::app); //ofstream fs("file.dat", ios::app); if (! fs ) cout<< Failo nepavyko atidaryti <<endl; if ( fs.is_open() ) // is_open() grąžina true/false cout<< Failo nepavyko atidaryti <<endl; 18

Metodas eof() Metodas eof() skirtas failo pabaigai nustatyti: grąžina reikšmę 0, kai failo pabaiga dar nepasiekta, ir 1, kai jau turime failo pabaigą. #include <fstream> main() { ofstream R ("Rez59.txt"); ifstream D ("Duom59.txt"); char A[80]; while(! D.eof() ) { D.getline(A, sizeof(a)); // kas bus, jei D >> A;? cout << A << endl; R << A << endl; D.close(); R.close(); 19

istream::get ifstream sraute #include <iostream.h> #include <fstream.h> main() { ofstream R("Rez511.txt"); ifstream D("Duom511.txt"); char sim; while(!d.eof()) { sim = D.get(); cout << sim; R << sim; D.close(); R.close(); // get() naudojamas, kaip istream 20

ios.fail() Kiekvienu skaitymo iš failo žingsniu rekomenduojama patikrinti, ar veiksmas buvo sėkmingai atliktas. Tam skirtas metodas fail(), kurio rezultatas yra 0, kai klaidų nebuvo, ir 1, kuometįvyko klaida. Klaidų pranešimams ekrane skirtas išvedimo srautu objektas cerr. Metodas fail() naudojamas išvedime, norint įsitikinti, ar veiksmas buvo sėkmingas. 21

#include <iostream.h> #include <fstream.h> main(){ ofstream R ("Rez512.txt"); ifstream D ("Duom512.txt"); int a; if ( D.fail() ) cerr << "Neatidarytas duomenu failas"; else { while((!d.eof()) && (!D.fail())) { D >> a; if(! D.fail() ) { R << a << endl; cout << a << endl; D.close(); R.close(); 22

ostream::write istream::read Šiose klasėse yra write() ir read() metodai, skirti duomenų mainams su failais baitų lygyje t.y. nuskaitymas ir įrašymas atliekamas nurodant baitų kiekį. write( const char* pointer, int ncount ); read ( char* pointer, int ncount ); 23

#include <iostream.h> #include <fstream.h> struct Studentas{ char pav[20]; int metai; float ugis; ; main() { Studentas A; Studentas S = {"Petras ", 21, 187.5; ofstream R("Rez513.txt, ios::app); R.write((char *) &S, sizeof(studentas)); R.close(); ifstream D("Rez513.txt, ios::in); D.read((char *) &A, sizeof(studentas)); cout << A.pav << " " << A.metai << " " << A.ugis << endl; D.close(); 24

struct Studentas { char pav[20]; int metai; float ugis; ; main() { char sim; Studentas A; ofstream R("Rez514.txt, ios::app); ifstream D("Duom514.txt"); while(!d.eof()) { D.getline(A.pav, sizeof(a.pav)); D >> A.metai >> A.ugis; sim = ' '; // Eilutės pabaiga while(!d.eof() ) { sim = D.get(); cout << sim; // Duomenys ekrane cout << A.pav << " " << A.metai << " " << A.ugis << endl; // Duomenys faile R.write((char *) &A, sizeof(studentas)); D.close(); R.close(); // Skaitomi failo duomenys ir parodomi ekrane ifstream C("Rez514.txt"); while(!c.eof()) { C.read((char *) &A, sizeof(studentas)); if (!C.fail()) cout << A.pav << A.metai << " " << A.ugis; cout << endl; C.close(); 25