Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα οι σημαίες στα ρεύματα εισόδου/εξόδου αλλά και οι σημαίες για τον χειρισμό αρχείων είναι τύπου enum? π.χ. 

 

ofstream myfile;
myfile.open("datafile",ios::out | ios::app);

Το out και το app είναι τύπος enum στην κλάση ios σωστά ;

Επίσης οι χειριστές στα ρεύματα εισόδου και εξόδου τι είναι ; π.χ. ο χειριστής endl σε μια πρόταση σαν αυτήν εδώ:
 

cout << 255 << endl;

Μπορεί να μην θέτω καλά τις ερωτήσεις αλλά ένας χειριστής στην C++ π.χ. ο hex με μια σημαία της C++ όπως ios::hex που έχουν ίδιο αποτέλεσμα γιατί καλούνται με διαφορετικό τρόπο;

 

 

  • Moderators
Δημοσ.

Τα out, app και τα flags για τα αρχεία είναι constants.

 

Για την ερώτησή σου για τους I/O manipulators δες εδώ.

 

Τώρα, για τη διαφορά του std::ios::hex με το std::hex δεν ξέρω, κοίταξα το definition τους στο VS και με έστειλε στο ίδιο σημείο. Δεν καταλαβαίνω τι εννοείς με το "καλούνται με διαφορετικό τρόπο'.

Δημοσ.

π.χ.


//Περίπτωση με σημαίες
cout.setf(ios::hex,ios::basefield);
cout<<255<<endl;

//Περίπτωση με χειριστές
//έχουν το ίδιο αποτέλεσμα
cout << hex << 255 << endl;

Και στις δύο αυτές περιπτώσεις ο αριθμός 255 εμφανίζεται σε 16 μορφή

  • Moderators
Δημοσ.

Στην πρώτη περίπτωση θέτεις flags για ολόκληρο το stream, ενώ στη δεύτερη μόνο για το μέρος του stream που ακολουθεί.

 

 

std::cout.setf(std::ios::hex, std::ios::basefield);
std::cout << 255 << " " << 255 << std::endl;

 

Εδώ θα εκτυπώσει ff ff.

 

 

std::cout << 255 << " " << std::hex << 255 << std::endl;

 

Εδώ θα εκτυπώσει 255 ff.

Δημοσ.

Και στις δύο αυτές περιπτώσεις ο αριθμός 255 εμφανίζεται σε 16 μορφή

 

Οι δύο περιπτώσεις είναι 100% ισοδύναμες (kercyn, το παράδειγμά σου δεν είναι το ίδιο -- αν το << std::hex μπει πρώτο τότε είναι το ίδιο). Απλά το πρότυπο σου παρέχει δύο τρόπους να κάνεις το ίδιο πράγμα.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...