User Tools

Site Tools


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
cpp:isteams [2019/05/14 13:27]
gthanos
cpp:isteams [2020/05/17 17:11]
Line 1: Line 1:
-====== Input Streams ====== 
- 
-Όπως προαναφέρθηκε τα //streams// εισόδου χρησιμοποιούν τον τελεστη **<<** (//stream extraction operator//) για την ανάγνωση από το //stream//. H //standard// βιβλιοθήκη παρέχει συναρτήσεις υπεφόρτωσης για τους βασικούς τύπους δεδομένων, ενώ δύνεται η δυνατότητα υπερφόρτωσης για όλους τους μη βασικούς τύπους που θα χρειαστεί να κατασκευάσετε στα προγράμματα σας. Το παρακάτω παράδειγμα διαβάσματος από το πληκτρολόγιο (//stdin//) είναι ενδεικτικό. 
- 
-<code cpp istream_example.cpp> 
-#include <iostream> 
-#include <cstdlib> // for exit() 
- 
-using namespace std; 
- 
-int main() { 
-  char c, str[256]; 
-  int number; 
-  double factor; 
-   
-  cin >> c; 
-  cout << "Read: " << c << endl; 
-  cin >> str; 
-  cout << "Read: " << str << endl; 
-  cin >> number; 
-  cout << "Read: " << number << endl; 
-  cin >> factor; 
-  cout << "Read: " << factor << endl; 
-} 
-</code> 
- 
-Για είσόδο ''hello -1512 1.63'', η έξοδος είναι  
-<code> 
-Read: h 
-Read: ello 
-Read: -1512 
-Read: 1.63 
-</code> 
- 
-Παρατηρήστε ότι από την πρώτη κλήση διαβάζεται ένας χαρακτήρας, ενώ από την 2η κλήση διαβάζεται το υπόλοιπο του //stream// μέχρι να συναντήσουμε κενό χαρκτήρα, χαρακτήρα //tab// ή χαρακτήρα αλλαγής γραμμής. 
- 
-====== Διαβάζοντας λέξη-λέξη ή γραμμή-γραμμή ====== 
- 
-Εάν πρόκειται να διαβάσουμε ένα κείμενο, η //standard// βιβλιοθήκη μας δίνει τη δυνατότητα να διαβάσουμε το κείμενο λέξη-λέξη ως εξής: 
- 
-<code cpp input_word.cpp> 
-#include <iostream> 
-#include <cstdlib> // for exit() 
- 
-using namespace std; 
- 
-int main() { 
-  char str[256]; 
-  while(!cin.eof()) { 
-    cin >> str; 
-    cout << str << " "; 
-  } 
-} 
-</code> 
- 
-Το παραπάνω παράδειγμα για να δουλέψει με ασφάλεια θα πρέπει να είμαστε σίγουροι ότι η λέξη μέγιστου μήκους που θα διαβάσουμε θα έχει μέγεθος 255 χαρακτήρες (συν το χαρκτήρα '\0'). Εναλλακτικά μπορούμε να διαβάσουμε μία ολόκληρη γραμμή χρησιμοποιώντας τη συνάρτηση //getline// ως εξής: 
- 
-<code cpp input_line.cpp> 
-#include <iostream> 
-#include <cstdlib> // for exit() 
- 
-using namespace std; 
- 
-int main() { 
-  char str[256]; 
-  while(!cin.eof()) { 
-    // Read a line of maximum size 255 bytes. 
-    cin.getline(str, 256); 
-    cout << str <<  endl; 
-  } 
-} 
-</code> 
- 
-Σε αυτή την περίπτωση θα πρέπει να είμαστε σίγουροι ότι το μέγιστο μήκος γραμμής δεν υπερβαίνει τους 256 χαρακτήρες, διαφορετικά εάν διβάζετε από το πληκτρολόγιο η συμπεριφορά του προγράμματος δεν είναι η αναμενόμενη εφόσον εντός των πρώτων 256 χαρακτήρων δεν συναντάται χαρακτήρας αλλαγής γραμμής. 
- 
-Το παραπάνω δεν ισχύει εάν χρησιμοποιήσουμε την έκδοση της //getline// για την κλάση std::string. Σε αυτή την περίπτωση δεν απαιτείται καμία μέριμνα για το μέγεθος των εισαγόμενων συμβολοσειρών. Το παράδειγμα που ακολουθεί είναι ενδεικτικό. 
- 
-<code cpp tokenize_using_std_string.cpp> 
-#include <iostream> 
-#include <cstdlib> // for exit() 
- 
-using namespace std; 
- 
-int main() { 
-  string str; 
-  while(!cin.eof()) { 
-    getline(cin, str); 
-    cout << str <<  endl; 
-  } 
-} 
-</code> 
  
cpp/isteams.txt · Last modified: 2020/05/17 17:11 (external edit)