cpp:basic_io

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Previous revision
cpp:basic_io [2021/04/25 14:14]
cpp:basic_io [2021/04/25 15:14]
gthanos [std::cin]
Line 1: Line 1:
 +====== Βασική είσοδος και έξοδος ======
 +
 +Η C++ χρησιμοποιεί την έννοια του //stream// προκειμένου να διαβάσει ή να γράψει σε σειριακές συσκευές όπως είναι η κονσόλα και το πληκτρολόγιο. Ένα //stream// είναι μία ακολουθία χαρακτήρων άγνωστου μεγέθους. Ένα C++ πρόγραμμα μπορεί να γράψει σε ένα //stream// ή να διαβάσει χαρακτήρες από ένα //stream//, χωρίς να γνωρίζει τις λεπτομέρειες της εσωτερικής υλοποίησης της πηγής από την οποία διαβάζει ή στην οποία γράφει. Το μόνο που είναι απαραίτητο να γνωρίζουμε είναι ότι οι χαρακτήρες γράφονται σειριακά, ο ένας μετά τον άλλο.
 +
 +Η //standard// βιβλιοθήκη της C++ ορίζει τα παρακάτω τέσσερα (4) streams σε κάθε πρόγραμμα:
 +|  <code cpp>std::cin</code>  | standard input stream  |  
 +|  <code cpp>std::cout</code>  | standard output stream  |
 +|  <code cpp>std::cerr</code>  | standard error stream  |
 +|  <code cpp>std::clog</code>  | standard log stream  |
 +
 +===== std::cout =====
 +
 +Το //stream// **std::cout** είναι αντικείμενο της κλάσης //**ostream**// και συνδέεται με τη //standard// έξοδο του προγράμματος. Το αντικείμενο χρησιμοποιείται σε συνδυασμό με τον τελεστή **%%<<%%** (//stream insertion operator//). Δείτε το παρακάτω παράδειγμα χρήσης του //stream// **std::cout**.
 +
 +<code cpp cout.cpp>
 +#include <iostream>
 +using namespace std;
 +int main() {
 +  cout << "Hello " << "World!" << endl;
 +}
 +</code>
 +
 +<WRAP tip 80% center round>
 +Βασικό χαρακτηριστικό των streams είναι ότι μπορείτε να εισάγετε στο stream ή να εξάγετε από το stream περισσότερες από μία ροές χαρακτήρων όπως δηλώνεται παραπάνω.
 +</WRAP>
 +
 +Το παραπάνω είναι ισοδύναμο με το εξής:
 +
 +<code cpp cout.cpp>
 +#include <iostream>
 +using namespace std;
 +int main() {
 +  cout << "Hello " ;
 +  cout << "World!" ;
 +  cout << endl;
 +}
 +</code>
 +
 +<WRAP tip 80% center round>
 +Παρατηρείτε ότι αν και το //stream// ορίστηκε ως **std::cout** στο πρόγραμμα αναγράφεται ως **cout**. Ο λόγος είναι η 2η γραμμή του προγράμματος ''using namespace std;'', η οποία δηλώνει ότι το πρόγραμμα χρησιμοποιεί το **namespace std**.
 +</WRAP>
 +
 +===== std::cin =====
 +
 +Το //stream// **std::cin** είναι αντικείμενο της κλάσης //**istream**// και συνδέεται με τη //standard// είσοδο του προγράμματος. Το αντικείμενο χρησιμοποιείται σε συνδυασμό με τον τελεστή **%%>>%%** (//stream extraction operator//). Δείτε το παρακάτω παράδειγμα χρήσης του //stream// **std::cin**.
 +
 +Χαρακτηριστικό του **std::cin** είναι ότι διαβάζει λέξη-λέξη. Εάν θέλετε να διαβάσετε περισσότερες από μία λέξεις θα πρέπει να επαναλάβετε την κλήση όπως παρακάτω:
 +
 +<code cpp 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;
 +}
 +</code>
 +
 +<WRAP tip 80% center round>
 +Το std::cin μετασχηματίζει τη λέξη που διάβασε στον τύπο δεδομένων της μεταβλητής στην οποία θα αποθηκευτεί η πληροφορία. 
 +Για παράδειγμα, στο παραπάνω πρόγραμμα διαβάζει ένα αλφαριθμητικό που αναμένουμε να περιέχει έναν ακέραιο και το αποθηκεύει στην ακέραια μεταβλητή age.
 +
 +Επίσης η εντολή
 +<code cpp>
 +  cin >> firstname >> lastname;
 +</code>
 +
 +Το παραπάνω είναι ισοδύναμο με δύο διακριτές κλήσεις του **std::cin** ως εξής:
 +
 +<code cpp>
 +  cin >> firstname;
 +  cin >> lastname;
 +</code>
 +
 +</WRAP>
 +
 +
 +
 +===== std::cerr =====
 +
 +Το //stream// **std::cerr** είναι αντικείμενο της κλάσης //**ostream**// και συνδέεται με τη //standard error// του προγράμματος. Το αντικείμενο χρησιμοποιείται σε συνδυασμό με τον τελεστή %%<<%% (//stream insertion operator//). Το //stream// **std::cerr** είναι //unbuffered//, δηλαδή εμφανίζεται στην οθόνη χωρίς καθυστέρηση καθώς δεν μεσολαβεί κάποιο //buffer//. Δείτε το παρακάτω παράδειγμα χρήσης του //stream// **std::cerr**.
 +
 +<code cpp cerr.cpp>
 +#include <iostream>
 +using namespace std;
 +int main() {
 +  cout << "Hello " << "World!"
 +  cerr << "My " << "error log" << endl;
 +}
 +</code>
 +
 +===== std::clog =====
 +
 +Ανάλογο με το //stream// **std::cerr** με τη διαφορά ότι το συγκεκριμένο //stream// είναι //buffered//.
 +
 +
 +
  
cpp/basic_io.txt · Last modified: 2021/04/25 14:14 (external edit)