View Full Version : [C++]modificare file di testo
in rete ho imparato a scrivere e leggere i files ma non trovo nulla sulla modifica.
io ho un file di testo molto lungo e complicato pieno di parole,frasi e numeri.
devo cercare la parola "atomo" dentro questo file e modificarla con "molecola".
come posso fare?
(il motivo per cui voglio fare il programma c++ è perchè ho 185 files su cui fare questa stessa operazione)
Più che un sw C++ ti converrebbe uno script; ad esempio con sed te la caveresti elegantemente.
saper fare queste cose in c++ mi tornerà utile per la mia tesi, dunque vorrei continuare a provare, e devo dire che ci sono quasi riuscito se non per uno strano crash.
ora sto modificando i files di un gioco di guerra e ho scritto questo codice ;
int main() {
...
while(f1.good())
{
getline(f1, s);
if (s.substr(1,9)=="peacetime")
{
s="#"+s;
}
f2<<s<<endl;
}
...
return 0;
}
il programma non crasha se metto s.substr(0,9) e questo perchè dovrebbe succedere qualcosa di brutto quando legge la stringa incriminata:
-------------------------------------------------------
defense_lobby = 4
interventionism = 1
(QUI C'E' TAB) peacetime_ic_mod = 0.6
nationalprovinces = { 359 362 329 361 360 334 }
ownedprovinces = { 359 362 361 360 }
controlledprovinces = { 359 362 361 360 }
--------------------------------------------------------
questo è la porzione di file di testo che sto cercando di modificare, la linea peacetime_ic_mod deve sostituirsi con #pacetime_ic_mod
ma come vedete nel file di testo quella linea è preceduta da uno spazio bianco che è una tabulazione...substr(1,9) crasha qui...
come faccio a dire a substr di partire da dopo la tabulazione invece che dal carattere 0?
ho risolto.
ero stato talmente sfortunato che la stringa più corta del file è di 9 caratteri
quindi substr(0,9) funzionava
e substr(1,9) crashava come incontrava una stringa di 10 caratteri.
ora ho messo una condizione in piu nell'if e tutto funziona
il prossimo e ultimo passo che dovrei fare è aprire uno ad uno tutti i files della directory come si può fare?
non posso scrivere per 185 volte
ifstream f1("files_originali\\italy.txt");
ofstream f2("files_modificati\\italy.txt");
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.