Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - problema con substr
Forum - C/C++ - problema con substr

Avatar
atx76 (Normal User)
Newbie


Messaggi: 2
Iscritto: 22/10/2010

Segnala al moderatore
Postato alle 17:46
Venerdì, 22/10/2010
salve sono nuovo di questo forum,quindi vi prego di scusarmi per eventuali errori.
ho questo problema che da ore non trovo una soluzione
devo leggere un file di testo( riga per riga) e riscriverle in un altro file modificando alcuni caratteri.
ho fatto una programmino e funziona correttamente, il mio problema che alla fine del ciclo devo cancellare il primo file.

facendo gli opportuni controlli ho notato che quello che blocca la chiusura del file sono le substring che ho inserito.
vi allego  codice spero che qualcuno mi possa aiutare.
#include <iostream>
#include <fstream> //header necessario per ifstream!

using namespace std;

int main() {
    ifstream f("file.txt" ); //nome del file da aprire, si può mettere anche il percorso (es C:\\file.txt)
     ofstream f2("file2.txt" , ios::app); //se il file non esiste lo crea, altrimenti lo sovrascrive!
    

    
    string s;

    if(!f) {
        cout<<"Il file non esiste!";
        return -1;
    }
    if(!f2) {
        cout<<"Errore nella creazione del file!";
        return -1;
    }

    while(f.good()) //x leggere tutto il file  ..
    {
        getline(f, s); //legge tutta la riga dal file e la mette nella variabile s
        string c=s.substr(0, 14);
         string d=s.substr(14, 4);
          string e=s.substr(18, 10);
        
           string g =d+c+e;
        f2<< g << endl;
}
          
    }
    f.close(); //chiude il file
    f2.close();
if(remove("file.txt)); // cancella file

    return 0;
}

grazie anticipatamente

PM Quote
Avatar
GuglielmoS (Ex-Member)
Pro


Messaggi: 114
Iscritto: 27/11/2009

Segnala al moderatore
Postato alle 17:57
Venerdì, 22/10/2010
Non ho provato a compilare, però ci sono degli errori di sintassi, ed inoltre devi effettuare un controllo sul contenuto del file che vai a leggere. Infatti se hai una stringa che non è lunga quanto quella che ti aspetti, avrai per forza di cose degli errori riguardanti la substr.
Codice sorgente - presumibilmente Delphi

  1. ...
  2. if (s.length() >= 28) {
  3.         string c=s.substr(0, 14);
  4.         string d=s.substr(14, 4);
  5.         string e=s.substr(18, 10);
  6.        
  7.         string g =d+c+e;
  8.         f2<< g << endl;
  9. }      
  10. ...
  11. // la } non ci va, se no viene chiuso il main
  12.     f.close(); //chiude il file
  13.     f2.close();
  14. ...
  15. // avevi dimenticato il " dopo file.txt
  16. if(remove("file.txt")); // cancella file



P.S: utilizza il tag code, se no non si capisce molto il codice.

Ultima modifica effettuata da GuglielmoS il 22/10/2010 alle 18:08


La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.
--Isaac Asimov
PM Quote
Avatar
atx76 (Normal User)
Newbie


Messaggi: 2
Iscritto: 22/10/2010

Segnala al moderatore
Postato alle 18:25
Venerdì, 22/10/2010
grazie  GuglielmoS, funziona perfettamente :k:

PM Quote