Vasilis89 Δημοσ. 3 Ιουνίου 2013 Δημοσ. 3 Ιουνίου 2013 έχω αυτό string ReadFile(char *FileName, vector<string> &Var) { string line; string Result; ifstream TextReader; TextReader.open(FileName); getline(TextReader, line ); if (line != "") { Result = line; Var.push_back(line); while ( TextReader.good() ) { getline(TextReader, line); Result += "\n" + line; Var.push_back(line); } } TextReader.close(); return Result; } και ένα αρχείο με αριθμούς χωρσμένους με κόμματα "1231,2342,1231,1423,23...." πιο θα είναι το αποτέλεσμα του υποπρογράμματος? 1231,2342,1231,1423,23/n ;h 1231/n2342/n klp τι κάνει το var.push_back(line)?
nucleus Δημοσ. 4 Ιουνίου 2013 Δημοσ. 4 Ιουνίου 2013 getline(TextReader, line ) Result = line; Φέρε μια γραμμή από το αρχείο Βάλτο στο result Var.push_back(line); Η μεταβλητή Var δεν ορίζεται κάπου μέσα στο κομματι κώδικα που παραθέτεις.Οπότε το τι μπορεί να κάνει η push_back είναι άγνωστο. while ( TextReader.good() ) { getline(TextReader, line); Result += "\n" + line; Var.push_back(line); } Όσο ο textreader φέρνει γραμμές και δεν έχει βρει το τέλος του αρχείου κάνει αυτό Result += "\n" + line.Ο τελεστής += μπορεί να ερμηνευτεί ως εξής Result = Result + "\n" + line άρα μπορείς να βρεις μόνος σου ποια θα είναι η έξοδος της συνάρτησης
pinball_elf Δημοσ. 4 Ιουνίου 2013 Δημοσ. 4 Ιουνίου 2013 Η μεταβλητή Var είναι ένας vector απο strings: string ReadFile(char *FileName, vector<string> &Var) Η εντολή: Var.push_back(line); προσθέτει στο τέλος του vector την μεταβλητή (string) line. 1
Vasilis89 Δημοσ. 4 Ιουνίου 2013 Μέλος Δημοσ. 4 Ιουνίου 2013 το αρχείο είναι αριθμοί χωρισμένοι με κόμματα.. δηλαδή "13,13,123,123,1234,123..." με το getline θα πάρει όλη την γραμμή μαζί η θα λαμβάνει κάθε κόμμα ως άλλη γραμμή? Πως μπορούν αυτά τα στοιχεία να μεταφερθούν σε έναν πίνακα?
nucleus Δημοσ. 4 Ιουνίου 2013 Δημοσ. 4 Ιουνίου 2013 Getline σταματά να διαβάζει όταν δει τον χαρακτήρα newline (\n) οπότε ναι θα φέρει όλη την γραμμή. Θες να μεταφέρεις όλη την γραμμή σε ένα πίνακα ή να βάλεις σε ένα πίνακα την τιμή του result που επιστρέφει η ReadFile?
Vasilis89 Δημοσ. 4 Ιουνίου 2013 Μέλος Δημοσ. 4 Ιουνίου 2013 θέλω να μεταφέρω σε έναν πίνακα τι τιμές ενός αρχείου πού είναι στην μορφή "1231,12312,12313,12312..".. plz help
V.I.Smirnov Δημοσ. 4 Ιουνίου 2013 Δημοσ. 4 Ιουνίου 2013 Δεδομένου ότι θέλεις να κάνεις τη μετατροπή από fortran σε C++ που ρωτάς αλλού,το απόσπασμα της C++ που παραθέτεις εδώ (μάλλον από κάπου το έκανες copy-paste)είναι γενικά ακατάλληλο για να αντικαταστήσει την read(*,*) της fortran.Eίναι υπερβολικά πολύπλοκο για κάτι απλό. Εφόσον ξέρεις πόσοι είναι οι αριθμοί που θέλεις να εισάγεις στον πίνακα,δοκίμασε με την fscanf() της C/C++. Είναι πιο κοντά στην read() της fortran.Υπάρχει και τρόπος να εισάγεις τα στοιχεία χωρίς να ξέρεις το πλήθος τουςαλλά αυτό είναι μεταγενέστερο βήμα. Πρέπει να προσέξεις κάπως με τον χαρακτήρα \n (αλλαγή γραμμής) διότι αυτές oι εντολές της C/C++ έχουν κάποιες ιδιοτροπίες.Εγώ όταν είχα κάνει κάτι παρόμοιο είχα χρησιμοποιήσει και την _gettc() για να ελέγχω τον "\n".Άλλη παρόμοια γι αυτή τη δουλειά είναι και η fgetc().Η fortran δεν έχει τέτοια προβλήματα. -
pinball_elf Δημοσ. 6 Ιουνίου 2013 Δημοσ. 6 Ιουνίου 2013 Μα ήδη η μεταβλητή Result που επιστρέφεται απο την μέθοδο, έχει υπο μορφή πίνακα (string = sequence of characters) όλο το αρχείο και το μονο που χρειάζαται είναι να την σαρώσεις και να πετάξεις τα σκουπίδια ('\n', ',')
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα