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.