Avatar billede dinirex Nybegynder
13. januar 2008 - 21:14 Der er 8 kommentarer og
1 løsning

Ændring i database

Hey... Jeg har tidligere oprettet et spørgsmål omkring søgning i databasen, og nu er jeg støt på et nyt problem... Jeg vil gerne kunne erstatte en linje tekst...

F.eks.

Harry Potter & De viser sten
Harry Potter & Hemmelighedernes kammer

Ups, der er en fejl i vise, det vil jeg gerne have ændret...
Det kan jeg godt, men hvis jeg vil ændre det til noget der er kortere, så vil de sidste bogstaver stadig stå der....

så der vil komme til at stå:

Harry Potter & De vise stenn

da den vil tage det original n og lade det blive stående...

KODE

void eksdatafunktion(void)
{
    char navn[10];
    string soeg, nydata;
    cout << "Skriv navnet p\x86 databasen, hvor i dataen skal \x91ndres? ";
    cin >> navn;
    ifstream readfile(navn);
    cout << "Skriv den nye information, som skal erstatte den originale: ";
    cin.get();
    getline(cin, nydata);
   
    cout << "S\x9bg efter original data, som skal \x91ndres: ";
    getline(cin, soeg);
    double x = 3;
   
    while(!readfile.eof())
    {
        string soegresultat;
        getline(readfile,soegresultat);
        int k = soegresultat.find(soeg);
       
        if(k >= 0)
        {
            cout << soegresultat << "\n";
            readfile.close();
            ofstream data(navn, ios::in);
            data << nydata;
            data.close();
           
        }
    }
}
/KODE

hvordan får man den til at slette en linje med tekst og indskrive den nye tekst?

PS jeg ved godt min kode bør være:

while(getline(readfile,soegresultat))

Men så langt er jeg ikke lige nået... Retter småtingene til sidst
Avatar billede arne_v Ekspert
13. januar 2008 - 21:17 #1
Man kan ikke rette vilkårligt i en tekst fil.

Du bliver nødt til at læse hele filen og skrive en ny fil med det opdaterede indhold.
Avatar billede dinirex Nybegynder
13. januar 2008 - 21:22 #2
Jamen, jeg har da rettet i den, så den placering, jeg nu har søgt efter... men jeg kan bare ikke få den til at fjerne de restende bogstav/tegn... Kunne man evt. sætte den til at indsætte en masse mellemrum?
Avatar billede bertelbrander Novice
13. januar 2008 - 22:04 #3
Men du kan ikke fjerne eller indsætte karakterer vilkårligt i en fil, du kan kun tilføje til enden af filen, eller erstatte karakterer med nogle andre.

Så du kan godt overskrive "Poul Hansen" med "Bo Lind    ".
Avatar billede dinirex Nybegynder
13. januar 2008 - 22:19 #4
hmm... Okay... Problemet er at en person skal kunne ændre det ved at skrive det nye data og derefter blot søge på det gamle...

Så hvis jeg nu vil udbytte Poul Hansen med Bo Lind, så duer det jo ikke at jeg skal bede vedkommende om, at lave en masse mellemrum...

Kan man ikke få programmet til at tilføje ca. 20 mellemrum efter det vedkommende har skrevet?
Avatar billede bertelbrander Novice
16. januar 2008 - 19:57 #5
Det er ret trivielt at få programmet til at skrive x antal mellemrum:
int n;
for(n = 0; n < x; n++)
  data << ' ';

Det kræver dog at du sætter en maksimum længde på navne.
Avatar billede dinirex Nybegynder
20. januar 2008 - 13:08 #6
Okay, jamen det må jeg så prøve, vedkommende der først ligger  svar, får point
Avatar billede bertelbrander Novice
20. januar 2008 - 14:36 #7
Jeg samler ikke på point.
Avatar billede arne_v Ekspert
20. januar 2008 - 21:28 #8
Jeg passer også. Ikke fordi jeg har noget imod point, men du bevæger dig jo i en anden
retning end den jeg anbefalede.
Avatar billede dinirex Nybegynder
21. januar 2008 - 11:20 #9
okay, jamen jeg siger så tak for hjælpen :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester