Incepat0r Posted March 22, 2013 Report Posted March 22, 2013 De ex. am liniile:linie alinie blinie csi as vrea spre sa rescriu linia numarul 2 adica "linia b" cu o alta linie..sa zicem "linie x" iar in fiseirul text sa apara:linie alinie xlinie cadaug la inceputul liniei un nr de ordine: for(forward=fisier.begin();forward!=fisier.end();forward++,i++) { cout<<i<<":\t"<<*(forward)<<endl; } cout<<"numar linie: ";cin>>n;citesc numarul de ordine iar linia coresunzatoare as vrea sa o suprascriu.Cum as putea face asta ca nu am nici o idee. Quote
H3xoR Posted March 22, 2013 Report Posted March 22, 2013 Am eu o metod? dar.. e cam ineficient?.Cite?ti tot fi?ierul într-un vector de caractere ( char buff[1000][1000]; )?i de aici e relativ simplu.. modifici ce linie vrei in vectorul respectiv ?i scrii fi?ierul final.Repet.. este ineficient dar sigur ?i u?or.Mai este o metod? cu seek, dar nu am folosit-o niciodat?, caut? pe net.Baft? Quote
FarSe Posted March 22, 2013 Report Posted March 22, 2013 Sa zicem ca ai fisierul A. Mai faci un fisier B in care scrii ce este in A,Apoi citind linie cu linie din B,verifici daca este acea linie dorita si ii schimbi valoarea,apoi scrii datele in A Ceva asemanator cu INI... Quote
nedo Posted March 22, 2013 Report Posted March 22, 2013 pentru ce vrei, si cum vrei tu sa faci, o solutie ar fii urmatoarea, dar e valabila doar atat timp cat marimea liniei nu se schimba, adica daca pe linie ai 5 caractere, tu le inlocuiesti pe toate 5, sau o parte din ele, dar la final tot 5 caractere sa ai.solutia mea ar fi sa folosesti membrii tellg,seekg, tellp,seekp din fstream.Creezi un feector care sa tina locatia inceputului fiecarei linii, eventual poti sa salvezi undeva si lungimea liniei. Iar cand vrei sa modifici o linie te folosesti de asta. Tine cont ca fisierul trebuie deschis in mod binar ca aceste functii sa functioneze corect. Mai multe informatii aici Quote