anoniem Geplaatst: 3 mei 2002 Delen Geplaatst: 3 mei 2002 Hoi, ik ben bezig met een programmaatje in C++ dat een bestand inleest, en bij een bepaalde regel wat weg gaat schrijven. De juiste regel opzoeken voor wegschrijven doe ik dmv een comment wat daat staat, en waar ik dan een strcmp op doe. Bij de volgende regel wil ik dan gaan schrijven. Het probleem is nu alleen dat er dan standaard overschreven wordt. Dat moet niet, er moet worden ingevoegd. Hoe kan ik dit voor elkaar krijgen? Ik zal hieronder ook nog een stukje van de code dumpen, voor de duidelijkheid: [code:1:25031cb89c] fstream file("bestand.txt", ios::in | ios::out); if(file.is_open()) { while(!file.eof()) { file.getline(buffer, 1024); if (strncmp(buffer, "//--begin", 9) == 0) file << "iets"; } file.close(); } [/code:1:25031cb89c] als er nu in het bestand zoiets stond: blablabla //--begin nog meer bla bla Dan zal er na het runnen staan: blablabla //--begin ietsmeer bla bla Ik heb van alles geprobeerd, maar ik kan nergens vinden hoe ik dit ui kan schakelen... Iemand een idee?? [edit] titel aangepast in de hoop op meer respons [/edit] [ Dit bericht is bewerkt door: rkars op 2002-05-06 11:48 ] Quote Link naar reactie
anoniem Geplaatst: 6 mei 2002 Auteur Delen Geplaatst: 6 mei 2002 de regel: fstream file("bestand.txt", ios::in | ios::out); zou je kunnen veranderen in: fstream file("bestand.txt", ios::in | ios::out | ios:app); Dit betekend dat ie append (toevoegt). Ik weet alleen niet uit m'n hoofd of dat alleen aan het einde van het bestand is of ook in 't midden. Quote Link naar reactie
anoniem Geplaatst: 6 mei 2002 Auteur Delen Geplaatst: 6 mei 2002 Ah... bedankt voor je antwoord! Ik was al bang dat ik het topic een klein kickje moest gaan geven. Ik had (dacht ik) ios::app al geprobeerd. Voor de zekerheid heb ik het echter nogmaals geprobeerd, maar helaas, de 'file-pointer' staat hiermee gelijk aan het eind van het bestand. Dit heb ik even gecontroleerd dmv een tellp(). Op het moment dat ik de file-pointer met een seekp(...) zou zetten naar het juiste beginpunt wordt er weer gewoon overschreven. Het enige wat ik nog zou kunnen verzinnen is dat ik alles onder //--begin naar een ander tekstbestand wegschrijf, dan de tekst toevoeg, om vervolgens het zojuist weggeschreven tekstbestand eronder te gaan kopieren. Dit komt echter de performance niet echt ten goede, zeker niet als de lengte op gaat lopen. Zou er dan echt geen andere manier zijn binnen C++? Quote Link naar reactie
anoniem Geplaatst: 6 mei 2002 Auteur Delen Geplaatst: 6 mei 2002 Append betekent toevoegen en dat gebeurt aan het einde van het bestand. Volgens mij kun je niet iets toevoegen in het midden van een bestand zonder dat je een nieuw bestand aanmaakt. Als dit nieuwe bestand gesloten is dan kun je het origineel verwijderen of hernoemen en het nieuwe bestand de naam van het originele bestand geven. Quote Link naar reactie
anoniem Geplaatst: 6 mei 2002 Auteur Delen Geplaatst: 6 mei 2002 Dat zou balen zijn als het niet mogelijk is. Misschien maar eens gaan kijken naar alternatieven! Quote Link naar reactie
anoniem Geplaatst: 11 mei 2002 Auteur Delen Geplaatst: 11 mei 2002 Als je records van je RA-gegevensfile d.m.v. een ketting verbindt, dan kun je records wissen en toevoegen zonder de ander records op te schuiven. Voor het niet-sequentieel zoeken in zo'n file moet je er daarnaast zoekfile's op na houden. Elke zoekfile bevat 1 veld van de records waarop je wilt zoeken en het bijbehorende recordnr van de gegevensfile. Voordeel van dit systeem is dat je in de zoekfiles niet alle recordnrs hoeft aan te passen omdat in de gegevensfile de records niet verplaats worden. Misschien is dit wat te beknopt, maar anders wordt het een heel verhaal. Ik wil het eventueel wel verder uitwerken. Of er in de C++ bibliotheek containers zijn met zo'n structuur weet ik niet. _________________ Arend. [ Dit bericht is bewerkt door: Arend_ op 2002-05-12 01:03 ] Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen