User Tools

Site Tools


cpp:basic_io

Βασική είσοδος και έξοδος

Η C++ χρησιμοποιεί την έννοια του stream προκειμένου να διαβάσει ή να γράψει σε σειριακές συσκευές όπως είναι η κονσόλα και το πληκτρολόγιο. Ένα stream είναι μία ακολουθία χαρακτήρων άγνωστου μεγέθους. Ένα C++ πρόγραμμα μπορεί να γράψει σε ένα stream ή να διαβάσει χαρακτήρες από ένα stream, χωρίς να γνωρίζει τις λεπτομέρειες της εσωτερικής υλοποίησης της πηγής από την οποία διαβάζει ή στην οποία γράφει. Το μόνο που είναι απαραίτητο να γνωρίζουμε είναι ότι οι χαρακτήρες γράφονται σειριακά, ο ένας μετά τον άλλο.

Η standard βιβλιοθήκη της C++ ορίζει τα παρακάτω τέσσερα (4) streams σε κάθε πρόγραμμα:

std::cin
standard input stream
std::cout
standard output stream
std::cerr
standard error stream
std::clog
standard log stream

std::cout

Το stream std::cout είναι αντικείμενο της κλάσης ostream και συνδέεται με τη standard έξοδο του προγράμματος. Το αντικείμενο χρησιμοποιείται σε συνδυασμό με τον τελεστή << (stream insertion operator). Δείτε το παρακάτω παράδειγμα χρήσης του stream std::cout.

cout.cpp
#include <iostream>
using namespace std;
int main() {
  cout << "Hello " << "World!" << endl;
}

Βασικό χαρακτηριστικό των streams είναι ότι μπορείτε να εισάγετε στο stream ή να εξάγετε από το stream περισσότερες από μία ροές χαρακτήρων όπως δηλώνεται παραπάνω.

Το παραπάνω είναι ισοδύναμο με το εξής:

cout.cpp
#include <iostream>
using namespace std;
int main() {
  cout << "Hello " ;
  cout << "World!" ;
  cout << endl;
}

Παρατηρείτε ότι αν και το stream ορίστηκε ως std::cout στο πρόγραμμα αναγράφεται ως cout. Ο λόγος είναι η 2η γραμμή του προγράμματος using namespace std;, η οποία δηλώνει ότι το πρόγραμμα χρησιμοποιεί το namespace std.

std::cin

Το stream std::cin είναι αντικείμενο της κλάσης istream και συνδέεται με τη standard είσοδο του προγράμματος. Το αντικείμενο χρησιμοποιείται σε συνδυασμό με τον τελεστή >> (stream extraction operator). Δείτε το παρακάτω παράδειγμα χρήσης του stream std::cin.

Χαρακτηριστικό του std::cin είναι ότι διαβάζει λέξη-λέξη. Εάν θέλετε να διαβάσετε περισσότερες από μία λέξεις θα πρέπει να επαναλάβετε την κλήση όπως παρακάτω:

cin.cpp
#include <iostream>
using namespace std;
int main() {
  char firstname[50], lastname[50];
  cout << "Enter your first name followed by your last name: ";
  cin >> firstname >> lastname;
  cout << "Your name is: " << firstname << " " << lastname << endl;
  int age;
  count << "Enter your age:";
  cin >> age;
  cout << "Your age is: " << age << endl;
}

Το std::cin μετασχηματίζει τη λέξη που διάβασε στον τύπο δεδομένων της μεταβλητής στην οποία θα αποθηκευτεί η πληροφορία. Για παράδειγμα, στο παραπάνω πρόγραμμα διαβάζει ένα αλφαριθμητικό που αναμένουμε να περιέχει έναν ακέραιο και το αποθηκεύει στην ακέραια μεταβλητή age.

Επίσης η εντολή

  cin >> firstname >> lastname;

Το παραπάνω είναι ισοδύναμο με δύο διακριτές κλήσεις του std::cin ως εξής:

  cin >> firstname;
  cin >> lastname;

std::cerr

Το stream std::cerr είναι αντικείμενο της κλάσης ostream και συνδέεται με τη standard error του προγράμματος. Το αντικείμενο χρησιμοποιείται σε συνδυασμό με τον τελεστή << (stream insertion operator). Το stream std::cerr είναι unbuffered, δηλαδή εμφανίζεται στην οθόνη χωρίς καθυστέρηση καθώς δεν μεσολαβεί κάποιο buffer. Δείτε το παρακάτω παράδειγμα χρήσης του stream std::cerr.

cerr.cpp
#include <iostream>
using namespace std;
int main() {
  cout << "Hello " << "World!" ; 
  cerr << "My " << "error log" << endl;
}

std::clog

Ανάλογο με το stream std::cerr με τη διαφορά ότι το συγκεκριμένο stream είναι buffered.

cpp/basic_io.txt · Last modified: 2021/04/25 14:14 (external edit)