arna Skrevet 9. november 2005 Del Skrevet 9. november 2005 (endret) Jeg sitter med ett txt dokument jeg ønsker å fjerne litt data i, hvordan skal jeg skrive koden for å få det til? Si txt dokumentet ser slik ut og er bygd opp på denne måten: Navn Adresse Postnr poststed Arne ArnesenHardangervidda 15 3827 Oslo Tore Torssen Opplandveien 11 1130 Brevik Hvordan skal jeg foreksempel kunne bytte ut navnet Tore Torssen med noe annet, eler foreksempel fjerne en setning? tex adresse, eller postnr? (Ved å bruke fstream) * Endret 9. november 2005 av arna Lenke til kommentar
Peter Skrevet 9. november 2005 Del Skrevet 9. november 2005 Jeg ville bare lest inn filen linje etter linje, dersom jeg ville beholde linjen, la jeg den i en buffer, hvis ikke, bare ignorerte jeg den og gikk på neste linje. Så ville jeg ha skrevet ut det jeg hadde i bufferen til den samme filen igjen. Lenke til kommentar
arna Skrevet 9. november 2005 Forfatter Del Skrevet 9. november 2005 Jeg ville bare lest inn filen linje etter linje, dersom jeg ville beholde linjen, la jeg den i en buffer, hvis ikke, bare ignorerte jeg den og gikk på neste linje.Så ville jeg ha skrevet ut det jeg hadde i bufferen til den samme filen igjen. 5131156[/snapback] Du kan vel ikke gi meg ett eksempel på dette? Burde være ok å fikse med en lite for løkke vil jeg da tro.. Skal se om jeg finner noe ut av det, bra tips Lenke til kommentar
dayslepr Skrevet 9. november 2005 Del Skrevet 9. november 2005 to muligheter: * lese alt inn, for så å skrive alt eller deler ut (som Nazgul nevner) * bruke mmaping ( http://www.die.net/doc/linux/man/man2/mmap.2.html ) .. her har du flere muligheter ..men gå for det første hvis du ikke vet at du trenger det andre.. Lenke til kommentar
Peter Skrevet 10. november 2005 Del Skrevet 10. november 2005 DENNE KODEN ER IKKE TESTET, BARE SKREVET RETT INN I FORUMET (Bare for å gjøre det helt klart!) #include <fstream> #include <vector> #include <string> typedef std::vector<std::string> strV; int main() { std::fstream fil; strV vBuffer; fil.open("minfil.txt",std::ios::in); if(fil.is_open()) { std::string sBuffer; while(!fil.eof()) { getline(fil,sBuffer); if(sBuffer != "denne vil jeg ekskludere") { vBuffer.push_back(sBuffer); } } fil.close(); } fil.open("minfil.txt", std::ios::out|std::ios::trunc); if(fil.is_open()) { strV::const_iterator it; for(it = vBuffer.begin();it<vBuffer.end();it++) { fil << *it << std::endl; } fil.close(); } return 0; } Eller noe sånt. Er sikkert noe skrivefeil inni der. (Usikker på om du vil trenge std::endl i fil << *it << std::endl; Dersom du får doble linjeskift i filen etter å ha kjørt programmet, så fjern den) Noen lurer sikkert på hvorfor jeg må åpne filen to ganger, og det er rett og slett bare for å bruke std::ios::trunc som fjerner alt innholdet i filen. Eller ville du fått noen linjer på slutten av filen som ikke burde ha vært der. Finnes mange måter å løse det på, jeg valgte å åpne filen på nytt. Lenke til kommentar
arna Skrevet 10. november 2005 Forfatter Del Skrevet 10. november 2005 Takk for koden! skal ta en kikk på den etterpå... Bare en ting som falt meg når jeg leste koden din og generelt mange andre på forumet.. Hvorfor skriver dere " std:: " hele tiden når det kan unngås med " using namespace std; " en gang? Lenke til kommentar
Klette Skrevet 10. november 2005 Del Skrevet 10. november 2005 Smak og behag? I noen tilfeller er det best å holde namespacene skikkelig separert. Men ikke bry deg om dette enda Lenke til kommentar
Peter Skrevet 10. november 2005 Del Skrevet 10. november 2005 Hovedregelen er at man ikke skal bruke "using namespace std" i header filer, men jeg har bare blitt så vant til å skrive std, at det ikke akkurat koster meg noe særlig. Synes faktisk at koden blir litt mer oversiktlig og selvforklarende da. Lenke til kommentar
arna Skrevet 10. november 2005 Forfatter Del Skrevet 10. november 2005 Smak og behag? I noen tilfeller er det best å holde namespacene skikkelig separert. Men ikke bry deg om dette enda wink.gif Jaha? Care to explain? Hovedregelen er at man ikke skal bruke "using namespace std" i header filer, men jeg har bare blitt så vant til å skrive std, at det ikke akkurat koster meg noe særlig. Synes faktisk at koden blir litt mer oversiktlig og selvforklarende da. headerfiler? Hva brukes slike filer til, eller hva slags funksjon har dem? Når du sier at koden blir selvforklarende betyr det at " std:: " betyr noe for koden? Som jeg har vært borti at man kan sette inn objektsfunksjoner som " navn :: dato()".. Forøvrig hadde koden din en liten feil: " error C2065: 'getline' : undeclared identifier" Lenke til kommentar
Peter Skrevet 10. november 2005 Del Skrevet 10. november 2005 Du må bare bli litt mer erfaren i C++, så vil du fort komme over header filer. Mener bare at med std:: så forklarer man med en gang hvor funksjonen eller objektet kommer fra. Tror du må bruke std::getline() Lenke til kommentar
arna Skrevet 10. november 2005 Forfatter Del Skrevet 10. november 2005 Du må bare bli litt mer erfaren i C++, så vil du fort komme over header filer.Mener bare at med std:: så forklarer man med en gang hvor funksjonen eller objektet kommer fra. Tror du må bruke std::getline() 5136344[/snapback] Oj, funket greit den når jeg satt inn "std::getline()" ja, men fikk noen ganske fine warnings også Forøvrig, var det meningen "minfil.txt" skulle inneholde noe? når du sier hvor funksjonen eller objektet kommer fra. Du kan vel ikke gi meg ett eksempel på hvordan du mener det? Er det en spesiell type informasjon som gis ved bruken av " std:: " ? Lenke til kommentar
GenericName Skrevet 10. november 2005 Del Skrevet 10. november 2005 (endret) ... Endret 12. januar 2011 av Token Lenke til kommentar
arna Skrevet 10. november 2005 Forfatter Del Skrevet 10. november 2005 Bare si ifra hvis jeg bommer nå! cout, endl, etc, er definert i navnerom std. Håper jeg ikke tar feil nå 5136609[/snapback] Trodde det var <iostream> som definerte det jeg Lenke til kommentar
Peter Skrevet 11. november 2005 Del Skrevet 11. november 2005 Begge har rett Dersom du åpner <iostream>, vil du se at der defineres cout og cin, i namespacet std "minfil.txt" var bare et eksempelnavn på en fil, den skulle vel egentlig inneholde noen personlige ting ifl. ditt første innlegg? Hva slags warnings fikk du? Det gis ikke noe veldig spesiell informasjon, annet enn at du vet at std:: betyr at funksjonen eller klassen er definert i standardbiblioteket (namespace std). Hele den greia her bunner i personlige preferanse (om man vil bruke std:: eller using namespace std) Etterhvert som du jobber en del med stl (standard template library, det korrekte navnet for standardbiblioteket), vil du finne ut hva du foretrekker. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå