vasiliis Δημοσ. 19 Ιανουαρίου 2011 Δημοσ. 19 Ιανουαρίου 2011 Γιατί όταν γράφω σε ένα αρχείο με write γράφονται "κινέζικα";
fotis4u Δημοσ. 19 Ιανουαρίου 2011 Δημοσ. 19 Ιανουαρίου 2011 Τι εννοείς γράφονται κινέζικα ? Μήπως στον compiler δίνεις ελληνικούς χαρακτήρες ?
vasiliis Δημοσ. 19 Ιανουαρίου 2011 Μέλος Δημοσ. 19 Ιανουαρίου 2011 οταν ανοίγω το αρχείο δεν καταλαβαίνω τι γράφει
virxen75 Δημοσ. 19 Ιανουαρίου 2011 Δημοσ. 19 Ιανουαρίου 2011 όταν λες ανοίγεις ,με κειμενογράφο? Αν ναι το αρχείο δεν το σώνεις σαν αρχείο κειμένου.
vasiliis Δημοσ. 19 Ιανουαρίου 2011 Μέλος Δημοσ. 19 Ιανουαρίου 2011 Ναι.Είτε το σώσω .txt είτε binary τα εμφανίζει "κινέζικα"
taazz Δημοσ. 19 Ιανουαρίου 2011 Δημοσ. 19 Ιανουαρίου 2011 Έχεις 2 επιλογές ή μας δήχνεις τον κώδικα για αποθήκευση ή μας δίνεις το αρχείο να το δούμε. Σε κάθε περίπτωση οι πληροφορίες που δίνεις είναι ανύπαρκτες στην θέση σου δεν θα περίμενα απάντηση από μια τέτια ερώτηση.
vasiliis Δημοσ. 19 Ιανουαρίου 2011 Μέλος Δημοσ. 19 Ιανουαρίου 2011 >#include<iostream> #include<string.h> #include<cstring> #include<ctype.h> #include<stdlib.h> #include<iomanip> #include<fstream> using namespace std; class onomata { public: string onoma,eponimo; onomata(); }onomata[10]; onomata::onomata() { onoma=""; eponimo=""; } int main() { fstream file; file.open("onomata.txt",ios::out); onomata[0].onoma="giorgos"; onomata[0].eponimo="dimitriou"; file.write(reinterpret_cast<char *>(&onomata[0]),sizeof(onomata)); file.close(); system("pause"); return 0; }
Evgenios1 Δημοσ. 19 Ιανουαρίου 2011 Δημοσ. 19 Ιανουαρίου 2011 >using namespace std; class onomata { public: string onoma,eponimo; onomata(); friend fstream& operator<<(fstream& f,onomata& r) { f<<r.onoma; f<<r.eponimo; return f; } }onomata[10]; onomata::onomata() { onoma=""; eponimo=""; } int main() { fstream file; file.open("onomata.txt",ios::out); onomata[0].onoma="giorgos"; onomata[0].eponimo="dimitriou"; file<<onomata[0]; file.close(); system("pause"); return 0; }
vasiliis Δημοσ. 19 Ιανουαρίου 2011 Μέλος Δημοσ. 19 Ιανουαρίου 2011 Thnx.Αυτόν τον τρόπο τον ήξερα.Με την write πώς γίνεται;
taazz Δημοσ. 19 Ιανουαρίου 2011 Δημοσ. 19 Ιανουαρίου 2011 Thnx.Αυτόν τον τρόπο τον ήξερα.Με την write πώς γίνεται; Έπεξα λιγο με το κώδικα σου αλλά δεν ξέρω C++ για να μπορέσω να ξεπεράσω τα προβλήματα συμβατότητας μεταξύ char * και string. Το παράδειγμά σου δουλεύει όπως το περίμενα. Με λίγα λόγια γράφει τα δεδομένα του class onomata στον δίσκο και άμα το ανοίξεις με ένα hex editor θα δεις ότι το όνομα και το επώνυμο είναι εκεί απλά έχει ενα κάρο μηδενικούς χαρακτήρες πριν και μετά με αποτέλεσμα ανοιγοντάς το σε ένα text editor να γίνεται truncate το string στον πρώτο χαρακτήρα και να μην εμφανίζει το υπόλοιπο. Επίσης έχω αναστολές για την χρήση της sizeof η οποία επιστρέφει το μέγεθος της μεταβλητής στην μνήμη και όχι το πραγματικό μήκος του αλφαριθμητικού θα πρότεινα την χρήση strlen όπου και είχα πρόβληματα στην μετατροπή από string σε char* ξανά και μετά από κανα μισάωρο τα παράτησα. Τα βήματα που θα έκανα εγω για την εγγραφή txt αρχείου 1) file.write(onomata[0].onoma, strlen(onomata[0].onoma)); 2) file.write(onomata[0].eponima, strlen(onomata[0].eponima)); 3) file.write(crlf, strlen(crlf)); Δεν ξέρω πως θα κάνεις την μετατροπή και δεν θέλω να αρχήσω να υποθέτω αυτή την στιγμή.
parsifal Δημοσ. 19 Ιανουαρίου 2011 Δημοσ. 19 Ιανουαρίου 2011 Mια ματιά στην ενότητα του C++ FAQ σχετικά με το serialization ίσως βοηθήσει...
NewProject Δημοσ. 31 Ιανουαρίου 2011 Δημοσ. 31 Ιανουαρίου 2011 > stream.write(string.c_str(),string.size()); ?
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.