GreenBeret2006 Δημοσ. 11 Ιουνίου 2009 Δημοσ. 11 Ιουνίου 2009 Γεια σας παιδιά, είμαι λίγο άσχετος από προγραμματισμό κ θα ήθελα να μου πείτε τι τύπο δεδομένων βάζουμε σε μια μεταβλητή που περιέχει κ αριθμούς κ χαρακτήρες(π.χ. αριθμός κυκλοφορίας αυτοκινήτου) σε C++ ??? Μεταβλητές που περιέχουν μόνο γράμματα τις δηλώνουμε string,σωστά? Αν θέλουμε να δηλώσουμε ώρα βάζουμε int??(όλες οι απορίεσ αναφέρονται σε C++)
pinball_elf Δημοσ. 11 Ιουνίου 2009 Δημοσ. 11 Ιουνίου 2009 Μια μεταβλητή τύπου string δεν περιορίζεται μόνο σε γράμματα της αλφαβήτου. Μπόρει να παρεί οποιουδήποτε πλήθους χαρακτήρες από τον πίνακα χαρακτήρων ascii: > char licence_plate[] = "IX - 1234"; char ascii_time[] = "14:13 pm"; Οπότε μια μεταβλητή τύπου string σε καλύπτει απόλυτα. Εάν πάλι θές να έχεις ξεχωριστά το "αριθμητικό" μέρος απο το "αλφαβητικό" τότε μία μεταβλητή τυπου struct σε βολέυει καλύτερα: > typedef struct licence_plate_type { int int_value; char * string_value; } licence_plate_type; licence_plate_type licence_plate; int time = 51180; // seconds from the begining of the day Ελπίζω να βοήθησα.
GreenBeret2006 Δημοσ. 11 Ιουνίου 2009 Μέλος Δημοσ. 11 Ιουνίου 2009 Μια μεταβλητή τύπου string δεν περιορίζεται μόνο σε γράμματα της αλφαβήτου. Μπόρει να παρεί οποιουδήποτε πλήθους χαρακτήρες από τον πίνακα χαρακτήρων ascii: > char licence_plate[] = "IX - 1234"; char ascii_time[] = "14:13 pm"; Οπότε μπορώ απλά να γράψω >string arithmos="ΙΧ1234"; Για την ώρα, γινεται να γράψω int ή είναι καλύτερα να τη δηλώσω string? licence_plate[] είναι το όνομα που χρησιμοποιείς για τη μεταβλητή,σωστα? Γιατί έχεις βάλει αγκύλες? Ευχαριστώ για την βοήθεια
pinball_elf Δημοσ. 11 Ιουνίου 2009 Δημοσ. 11 Ιουνίου 2009 Για την ώρα, γινεται να γράψω int ή είναι καλύτερα να τη δηλώσω string? Να το δηλώσεις ως string, όχι int. licence_plate[] είναι το όνομα που χρησιμοποιείς για τη μεταβλητή,σωστα? σωστά. Γιατί έχεις βάλει αγκύλες? Στην ουσία εδώ δεν χρησιμοποιώ την κλάση String της C++ αλλά έναν πίνακα από char (character). Όταν δηλώνεις πίνακες πρέπει να θέτεις και το μεγεθός τους μέσα σε αγκύλες: > char my_array[5]; // array of five chars Στην περίπτωση μου > char licence_plate[] = "IX - 1234"; το μέγεθος υποδηλώνεται με το πλήθος των χαρακτήρων του "IX - 1234".
teo64x Δημοσ. 11 Ιουνίου 2009 Δημοσ. 11 Ιουνίου 2009 Ο τύπος που θα χρησιμοποιήσεις είναι char (δηλαδή χαρακτήρας που αντιστοιχεί σε γράμμα, αριθμό ή σύμβολο). Ο char αποθηκεύει ένα byte και επειδή θέλεις string, χρειάζεσαι μια σειρά από bytes, δηλαδή μια σειρά από μεταβλητές τύπου char, κατά προτίμηση αριθμημένες κάτω από ένα κοινό όνομα. Αυτό λέγεται πίνακας - στη συγκεκριμένη περίπτωση, πίνακας τύπου char - και συμβολίζεται με τις αγκύλες. Δηλαδή ο κώδικας: >char myString[] = "Hello"; Δημιουργεί έναν πίνακα τύπου char, ο οποίος (λόγω του ότι οι αγκύλες είναι άδειες) θα έχει αρκετό μέγεθος για να αποθηκεύσει την αρχική τιμή που του δίνεις. Η πρόσβαση στα στοιχεία του γίνεται με τη χρήστη των "μεταβλητών" myString[0] έως myString[L] όπου L το μέγεθος του πίνακα μειωμένο κατά 1. Αυτά με τη σημείωση, ότι τα strings περιέχουν ένα επιπλέον "αόρατο" byte στο τέλος, ως χαρακτήρα τερματισμού. Κατά το παράδειγμα, ο myString έχει μέγεθος 6 (H-e-l-l-o-τερματισμός) και είναι προσβάσιμος χρησιμοποιώντας τα myString[0] έως myString[5]. Υ.Γ.: Εκτός αν μιλάς για την κλάση String, επομένως κατάλαβα λάθος.
GreenBeret2006 Δημοσ. 11 Ιουνίου 2009 Μέλος Δημοσ. 11 Ιουνίου 2009 Σας ευχαριστώ πολύ για όσα μου είπατε!Με βοήθησαν πολύ!! Υ.Γ.: Εκτός αν μιλάς για την κλάση String, επομένως κατάλαβα λάθος. Εννοείς να γράψω στην αρχή >#include <string> using std::string; στην αχή κ μετά > string arithmos; Εγώ αυτό εννοούσα..
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.