Ciao a tutti!
Finalmente mi iscrivo in questo pozzo di sapienza ahahah
Arrivo rapidamente al problema:
Sto facendo un programma in C++ (devc++ V 5.11) ma una parte, alquanto stupida, proprio non mi riesce.
Dopo molte molte ricerche ho trovato un modo per usare il replace. E' stato parecchio difficile perchè a quanto pare esistono diversi modi.
Decido quindi di implementarlo nel mio programma.
Devo usarlo per sostituire una stringa in un file di testo.
Fino a qui tutto ok, se la stringa si trova in una sola riga la trova e la sostituisce.
codice:
int pos=0, lngtot=0, lng=0;
string testo="", a="keyup 12 [45]", cerca="keydown 45 [12]", primo="";
int main()
{
ifstream read("dia.txt");
getline(read, testo);
pos=testo.find("keydown 45 [12]");
cout<<pos<<"\n"; //questi cout mi servono per controllare il valore a video.
lngtot=testo.length();
cout<<lngtot<<"\n";
lng=lngtot-pos;
cout<<lng<<"\n";
testo.replace(pos, cerca.length(), a);
read.close();
ofstream write("dia.txt");
write<<testo;
cout<<testo<<endl;
write.close();
return 0;
}
Quindi ho deciso di provarlo come sarebbe poi nel file reale, ovvero modificando il txt da così:
visibile nascosto kedown 45 [12] visibile
A così:
visibile
nascosto
keydown 45 [12]
visibile
Ovviamente non funziona. Quindi ho modificato il codice in questo modo:
codice:
int pos=0, lngtot=0, lng=0;
string testo="", a="chiaro", cerca="nascosto", primo="";
int main()
{
ifstream read("dia.txt");
getline(read, testo);
while (read.good())
{
getline(read, testo);
lngtot=testo.length();
cout<<lngtot<<"\n";
pos=testo.find(cerca);
cout<<pos<<"\n";
lng=lngtot-pos;
cout<<lng<<"\n";
primo=testo.substr(pos,lng);
primo.replace(pos, lng, a);
cout<<primo<<"\n";
}
read.close();
ofstream write("dia.txt");
write<<testo;
cout<<testo<<endl;
write.close();
return 0;
}
Avevo già usato con successo questo metodo con il while quindi credevo funzionasse.
Potreste darmi una mano? Credo che il mio codice sia sbagliato, o almeno in parte. Magari sto usando un metodo inutile o esiste una via più semplice.
Vorrei capire cosa usare come usarlo e perchè sbaglio. Vi sarei grati se poteste farmi un esempio.
Vi ringrazio e vi saluto!
ps: Se necessario posso postare il codice con il while di cui parlavo sopra.