Gå til innhold

Ifstream, Hente en spesifikk linje


Anbefalte innlegg

Jeg holder på med å lage en slags telefonbok lignendes sak. Det jeg har laget hittil er at jeg kan legge til nummer og navn ved hjelp av std::ofstream til en textfil. Nummerene og navna blir lagret slik i txt fila. Per Hansen 12345678. Det jeg sliter litt med er og lage en funksjon som skal søke i text fila etter for eks. "Per", og visst den finner "Per", skal den vise kun den linja der "Per" var. Noen som har noen tips til dette?

 

Eksempel på hvordan nummeren blir lagret:

Per Hansen 12314234
Lars Jonsen 3443534
Kristoffer lol 3445355

Endret av Kjeksen
Lenke til kommentar
Videoannonse
Annonse
Enkleste er kanskje bare å bruke std:ifstream og lete serielt gjennom fila. Altså lese inn

(fornavn, etternavn, nummer) og sjekke om det passer med søket. Hvis det gjør, så skriv ut info, ellers gi tilbakemelding om at det ikke finnes.

Noe sånt jeg tenkte ja. Har klart å lese inn hele txt fila i en string variabel. Men visst jeg finner det jeg søker etter så skal jeg kun displaye den setningen som funnet var på :hmm:

Lenke til kommentar
Enkleste er kanskje bare å bruke std:ifstream og lete serielt gjennom fila. Altså lese inn

(fornavn, etternavn, nummer) og sjekke om det passer med søket. Hvis det gjør, så skriv ut info, ellers gi tilbakemelding om at det ikke finnes.

Noe sånt jeg tenkte ja. Har klart å lese inn hele txt fila i en string variabel. Men visst jeg finner det jeg søker etter så skal jeg kun displaye den setningen som funnet var på :hmm:

Det er jo lettere hvis du leser fra ifstreamen til variablene.

bool match = false;

ifstream fil("data.txt");

string fornavn, etternavn;

int tlf;

 

while(false == fil.eof() && true== fil.good()) {

  fil >> fornavn;

  fil >> etternavn;

  fil >> tlf;

 

  if "søkestreng matcher fornavn/etternavn etc.." {

      match = true;

      break;

  }

}

 

// hvis match, så gjør så...

 

ed:fixe

fixe2 - fail -> good

Endret av hishadow
Lenke til kommentar
okai, takker :D

et rask spm. eof(), og fail(), hva gjør de?

.eof() sier ifra når du når end_of_file, og .fail() sier ifra hvis det du leser inn ikke er i riktig format...

 

Du kan bruke

while(fil){
<insert code here>
}

 

i stedet for, da streamen selv sier ifra hvis noe er galt...

(Vet det gjelder for eof, og regner med at det gjelder for fail() også....)

Lenke til kommentar
okai, takker  :D

et rask spm. eof(), og fail(), hva gjør de?

.eof() sier ifra når du når end_of_file, og .fail() sier ifra hvis det du leser inn ikke er i riktig format...

 

Du kan bruke

while(fil){
<insert code here>
}

 

i stedet for, da streamen selv sier ifra hvis noe er galt...

(Vet det gjelder for eof, og regner med at det gjelder for fail() også....)

Ok..takker :D

 

Har løst problemet nå. Koden til hishadow ga meg en pekepinn og det funker utmerket.

Konsoll verjsonen av telefonboken min funker utmerket nå ivertfall..

Endret av Kjeksen
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...