Skriv videre til en txt-fil, og "space" i string

Tags:    c++

<< < 123 > >>
Goddag,
jeg sidder med problemet i C++, at når jeg skriver til en txt-fil mere end én gang i samme program, så overskrives blot den første mængde data. Hvordan får jeg C++ til at skrive videre på txt-filen?
Et andet spørgsmål er, hvordan jeg kan få C++ til at ignorere, når jeg overfører nogle værdier med space/mellemrum til en string? Dvs. når jeg skriver en sætning, og ikke blot et ord?

Mvh. Clive



Du kan kalde filen hvad som helst, compileren er sådan set ligeglad.
Vi skal nok se lidt kode for at kunne fortælle hvad der går galt.



Vi skal se noget kode :)



Jeg vil meget gerne vise mig kodefil, men eftersom jeg har været nødsaget til at starte forefra i mit projekt, er der pt. ingen kode ang. append.
Om ikke andet, så er jeg glad for den hjælp I giver mig - jeg får sikkert brug for mere af jeres viden undervejs.

Mvh. Clive



Hej igen,
jeg har i mit projekt erklæret en struct, hvori der er 3 strenge som hver indeholder en række oplysninger. Nu vil jeg gerne lave en ny funktion, der - på et givent tidspunkt - udskriver alt hvad structen indeholder.
For at indtaste de forskellige oplysninger i structen, bruger jeg en do-while løkke.
Skal jeg så bruge iterationer for at udskrive fra structen, eller findes der en anden smart måde?
Desuden vil jeg også spørge, om hvordan jeg overhovedet kan udskrive alt foreløbigt indhold på et hvilket som helst tidspunkt? Jeg forestiller mig noget med, at der for hver indtastning i do-while løkken spørges om man vil se indholdet. Men i og med, at selve udskrivningen skal foregå via en ny funktion, er jeg kommet i tvivl om det så overhovedet kan lade sig gøre med do-while løkken.

Mvh. Clive



Hej,
jeg har lige et hurtigt spørgsmål (koden kan I se nedenfor) om hvorfor jeg ikke kan få mit program til at udskrive alt hvad structen indeholder? Programmet er i relation til indlægget ovenfor.
Fold kodeboks ind/udKode 


Mvh. Clive



Indlæg senest redigeret d. 21.03.2008 01:01 af Bruger #13404
Problemet er disse linier:
Fold kodeboks ind/udKode 


Her erklærer du en funktion, denne bliver aldrig rigtigt kaldt.

print funktionen tager en const reference til en Person som argument, denne bruges ikke.

Derpå opretter du en Person objekt, og kalder print funktionen med dette objekt, print er netop funktionen selv, så hvis man kaldte print (rigtigt) ville den gå i en uendelig løkke.

Derpå opretter du en std::string objekt sk, som ikke får nogen værdi, den vil derfor være tom.
Og du spørger derpå om strengen indeholder "Y", det gør den ikke, den er tom.

I stedet bør du lave print om til:
Fold kodeboks ind/udKode 

Og så kalde funktionen fra main:
print(t);

Så mangler du bare at gøre noget fornuftigt med disse to linier fra nyKontakt:
std::cin >> st;
fflush(stdin);

Det mest logiske er nok at flytte dem til main, og lave en if(...) samme sted.



Indlæg senest redigeret d. 21.03.2008 01:16 af Bruger #4996
Tak for dit svar, Bertel Brander.
Men det hjælper lige lidt, med at lave print-funktionen om til dit forslag. Omvendt - hvis man skipper print-funktionen, og så bruger if-sætningen direkte i nyKontakt-funktionen, så udkskriver den også hvad man lige har indtastet (vel og mærket hvis man taster 'Y').
Problemet for mig er, at der skal være en print-funktion.
Kan det evt. lade sig gøre, at lave en slags referance i nyKontakt-funktionen, som går til print-funktionen, hvis man beder om det?

Mvh. Clive



Du kan lave noget i stil med dette i enden af nyKontakt:

std::cin >> st;
if(st == "Y")
printf(p);
}

Så skal brugeren bare skrive Y (dvs. stort Y), så udskriver den.

Men det er måske ikke særligt logisk at en funktion der henter data for en ny person også spørger om de skal skrives ud og skriver dem ud.



Tak for svaret. Det virker ganske fint nu.
Det kan godt være, det ikke er det mest logiske, men sådan er kravet nu engang til opgaven.

Jeg har lavet lidt om på programmet, således at det nu er et tal (1) man skal taste, for at programmet udskriver indholdet. Jeg har i den forbindelse også lavet en if-sætning, med else hvis man ikke taster 1. Dog udskriver den indholdet lige meget hvad man taster. Jeg poster koden nedenfor - så kan du evt. fortælle mig hvad jeg gør galt?

Fold kodeboks ind/udKode 


Hvis else-sætningen forekommer, skal en ny funktion træde i kraft. Men så langt er jeg endnu ikke kommet, så indtil videre udskriver den blot en tekst i form af "Fejl"

Mvh. Clive



Indlæg senest redigeret d. 26.03.2008 16:18 af Bruger #13404
int indhold = 1;
if (indhold = 1)
{

Her vil if-delen altid blive udført, da (indhold = 1) altid er sandt, du mener måske:
if(indhold == 1)
Bemærk == og ikke =
Men du har sat indhold til 1 lige inden, så det hjælper ikke.

Det du skal teste på er "st" som brugeren indtastede i nyKontakt.



<< < 123 > >>
t