manic Δημοσ. 5 Μαΐου 2012 Δημοσ. 5 Μαΐου 2012 θελω να διαβασω ενα αρχειο και να διαγραψω μια γραμμη αλλα παραλληλα να μην αφησω κενα (δλδ να κανω ολίσθηση προς τα επανω ολα τα στοιχεια) μεχρι τωρα εχω κανει αυτο αλλα δεν μου δουλευει (βασικα κανει απλα copy ολο το αρχειο) >void delete_line(int line) //το line ειναι ενας ακεραιος που προσδιοριζει την γραμμη προς διαγραφη του αρχικου αρχειου { int current_line=0; [left] ifstream in("infile.txt");[/left] ofstream out("outfile.txt"); int data; cout<<line; while(in.eof()==0) { in>>data; if(current_line != line) {out <<data<<<"\n";} current_line++; } in.close(); out.close(); rename(" outfile.txt","infile.txt "); }
παπι Δημοσ. 5 Μαΐου 2012 Δημοσ. 5 Μαΐου 2012 Δεν μπορεις να διαγραψεις ενα μερος του αρχειου. Πρεπει να φτιαξει καινουριο.
migf1 Δημοσ. 5 Μαΐου 2012 Δημοσ. 5 Μαΐου 2012 Αυτό που λέει ο πάπι! Χρησιμοποίησε μια συνάρτηση όπως η getline() ή η fgets() που διαβάζουν ολόκληρες γραμμές. Ξεκίνα από την αρχή του αρχείου σου και γράφε σε νέο αρχείο όλες τις γραμμές που δεν είναι η προς διαγραφή. Θα μετράς δηλαδή πόσα getline() κάνεις καθώς γράφεις στο άλλο αρχείο, και μόλις φτάσεις στην προς διαγραφή γραμμή θα την κάνεις skip.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα