Μου φαίνεται το τραβήξατε κάπως μακριά το πράγμα. Το αν θα επιλέξει κανείς την stdio ή την iostream δεν έχει να κάνει με τα μερικά microsecond διαφορά. Απλά, η stdio είναι η παλιά βιβλιοθήκη που κληρονομήθηκε από την C, ενώ η iostream είναι η βιβλιοθήκη της ίδιας της C++. Η iostream καταλαβαίνει από references, από templates, από buffers, επιτρέπει το συνδυασμό διαφόρων stream, κλπ, κλπ, κλπ, κλπ.
Αν θέλει κάποιος να οδηγήσει το αυτοκίνητο που λέγεται C++, η stdio είναι η 1η ταχύτητα. Τα streams είναι οι επόμενες 6 σύν η όπισθεν.
Όσον αφορά την basic_istream (σε αυτήν βασίζεται η cin), έχει αρκετά function για να διαβάσει δεδομένα, το καθένα με διαφορετική συμπεριφορά. Δεν υπάρχει κάποια καλύτερη. Ανάλογα με το τί θέλει να κάνει κάποιος, θα χρησιμοποιήσει την αντίστοιχη συνάρτηση. Τί γίνεται αν ο χρήστης δώσει παραπάνω από 9 χαρακτήρες? Θεωρώ ότι υπάρχει κάποιο πρόβλημα? Πετάω τους παραπανήσιους χαρακτήρες?
Για παράδειγμα, ο παρακάτω κώδικας διαβάζει 10 χαρακτήρες το πολύ από την cin. Αν υπάρχουν περισσότεροι από 10 χαρακτήρες, θα τους διαβάσει στο επόμενο loop. Αυτό θα συνεχιστεί μέχρι να τελειώσεουν οι χαρακτήρες. Ο κώδικας χρησιμοποιεί την setw η οποία καθορίζει ότι το stream θα χειρίζεται 10 χαρακτήρες τη φορά.
while(cin.good())
{
cout << endl;
char sen[15];
cin >> setw(10) >> sen;
cout<< sen;
}
Ο παρακάτω κώδικας όμως θέτει το cin.failbit==true αν βρει παραπάνω από 10 χαρακτήρες. Μόνο 10 χαρακτήρες θα μπουν στη μεταβλητή sen. Καλώντας την cin.fail() ελέγχο αν συνέβει κάτι τέτοιο και αν θεωρώ ότι πρέπει να συνεχίσω, καλώ την cin.clear(). Στο επόμενο loop ο κώδικας θα διαβάσει και τα υπόλοιπα δεδομένα.
while(cin.good())
{
cout << endl;
char sen[15];
cin.getline(sen,11);
cout<< sen;
if (cin.fail())
cin.clear();
}
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos