cpp:isteams

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
cpp:isteams [2019/05/21 04:13]
gthanos [Διαβάζοντας λέξη-λέξη ή γραμμή-γραμμή]
cpp:isteams [2020/05/17 17:55]
gthanos
Line 1: Line 1:
 ====== Input Streams ====== ====== Input Streams ======
  
-Όπως προαναφέρθηκε τα //streams// εισόδου χρησιμοποιούν τον τελεστη ''<<'' (//stream extraction operator//) για την ανάγνωση από το //stream//. H //standard// βιβλιοθήκη παρέχει συναρτήσεις υπεφόρτωσης για τους βασικούς τύπους δεδομένων, ενώ δίνεται η δυνατότητα [[cpp:vector_overloading_binary_operators|υπερφόρτωσης]] για όλους τους μη βασικούς τύπους που θα χρειαστεί να κατασκευάσετε στα προγράμματα σας. Το παρακάτω παράδειγμα διαβάσματος από το πληκτρολόγιο (//stdin//) είναι ενδεικτικό.+Όπως προαναφέρθηκε τα //streams// εισόδου χρησιμοποιούν τον τελεστη %%>>%% (//stream extraction operator//) για την ανάγνωση από το //stream//. H //standard// βιβλιοθήκη παρέχει συναρτήσεις υπεφόρτωσης για τους βασικούς τύπους δεδομένων, ενώ δίνεται η δυνατότητα [[cpp:vector_overloading_binary_operators|υπερφόρτωσης]] για όλους τους μη βασικούς τύπους που θα χρειαστεί να κατασκευάσετε στα προγράμματα σας. Το παρακάτω παράδειγμα διαβάσματος από το πληκτρολόγιο (//stdin//) είναι ενδεικτικό.
  
 <code cpp istream_example.cpp> <code cpp istream_example.cpp>
 #include <iostream> #include <iostream>
-#include <cstdlib> // for exit() 
  
 using namespace std; using namespace std;
Line 33: Line 32:
 </code> </code>
  
-Παρατηρήστε ότι από την πρώτη κλήση διαβάζεται ένας χαρακτήρας, ενώ από την 2η κλήση διαβάζεται το υπόλοιπο του //stream// μέχρι να συναντήσουμε κενό χαρκτήρα, χαρακτήρα //tab// ή χαρακτήρα αλλαγής γραμμής.+Παρατηρήστε ότι από την πρώτη κλήση διαβάζεται ένας χαρακτήρας, ενώ από την 2η κλήση διαβάζεται το υπόλοιπο του //stream// μέχρι να συναντήσουμε κενό χαρακτήρα, χαρακτήρα //tab// ή χαρακτήρα αλλαγής γραμμής. Ο κενός χαρακτήρας, ο χαρακτήρας //tab// ή ο χαρακτήρας αλλαγής γραμμής αποτελούν διαχωριστές την πληροφορίας ανάγνωσης ενός //stream// εισόδου και αγνοούνται από το //stream//.
  
 ====== Διαβάζοντας λέξη-λέξη ή γραμμή-γραμμή ====== ====== Διαβάζοντας λέξη-λέξη ή γραμμή-γραμμή ======
Line 72: Line 71:
 </code> </code>
  
-Σε αυτή την περίπτωση θα πρέπει να είμαστε σίγουροι ότι το μέγιστο μήκος γραμμής δεν υπερβαίνει τους 256 χαρακτήρες, διαφορετικά εάν διαβάζετε από το πληκτρολόγιο η συμπεριφορά του προγράμματος δεν είναι η αναμενόμενη, εφόσον εντός των πώτων 256 χαρακτήρων δεν συναντάται χαρακτήρας αλλαγής γραμμής.+Σε αυτή την περίπτωση θα πρέπει να είμαστε σίγουροι ότι το μέγιστο μήκος γραμμής δεν υπερβαίνει τους 256 χαρακτήρες μαζί με τον χαρακτήρα αλλαγής γραμμής. Διαφορετικά, μία γραμμή μπορεί να διαβαστεί σε περισσότερες από μία επαναλήψεις, εφόσον εντός των πρώτων 256 χαρακτήρων δεν απαντάται χαρακτήρας αλλαγής γραμμής.
  
-Το παραπάνω δεν ισχύει εάν χρησιμοποιήσουμε την έκδοση της //getline// για την κλάση std::string. Σε αυτή την περίπτωση δεν απαιτείται καμία μέριμνα για το μέγεθος των εισαγόμενων συμβολοσειρών. Δείτε το ενδεικτικό παράδειγμα που ακολουθεί:+Το παραπάνω δεν ισχύει εάν χρησιμοποιήσουμε την έκδοση της //getline// για την κλάση ''std::string''. Σε αυτή την περίπτωση δεν απαιτείται καμία μέριμνα για το μέγεθος των εισαγόμενων συμβολοσειρών, διότι η κλάση ''std::string'' μπορεί να αποθηκεύσει συμβολοσειρές μεταβλητού μήκους. Δείτε το ενδεικτικό παράδειγμα που ακολουθεί:
  
 <code cpp tokenize_using_std_string.cpp> <code cpp tokenize_using_std_string.cpp>
cpp/isteams.txt · Last modified: 2020/05/17 17:11 (external edit)