Printf vs cout

Tags:    c++ java gui swing

hvad er forskellen på printf og cout (andet en måden det skrives op på), og hvorfor skriver visual c++ det i prinf før cout hvis printf er lige efter cout(udover at det jo er microsoft som har lavet det ;))?
og hvilken funktion er bedst at bruge i hvilke situationer?



hvad er forskellen på printf og cout (andet en måden det skrives op på), og hvorfor skriver visual c++ det i prinf før cout hvis printf er lige efter cout(udover at det jo er microsoft som har lavet det ;))?
og hvilken funktion er bedst at bruge i hvilke situationer?


Du bør altid bruge cout i C++. printf() er en C-funktion der ikke er typesikker, mens cout er en C++ stream. cout er også lettere at bruge, idet den kan finindstilles via manipulatorer. printf() kræver et moderat obskurt kommandosprog. Bemærk f.eks. hvad der kræves for at udskrive et floating point tal med tre decimaler:

Fold kodeboks ind/udKode 


cout kan vist også indstilles på flere forskellige måder end printf(), men jeg vil ikke udtale mig med sikkerhed, idet mine printf()-kundskaber er en smule rustne. ;-)
--
I\\'m bloggin\\' it.
http://www.sigkill.dk/blog



Da jeg har brugt C i mange år inden jeg lærte C++, synes jeg at C's printf er mere simpel at bruge.
Men jeg foretrækker efterhånden cout (streams), specielt fordi de er lette at udvide.
Hvis man f.ex. laver sin egen class kan man lave en << operator til class'en til at udskrive class'en, så dem der bruger class'en ikke skal bekymre sig om hvordan man udskriver den.



Bah, brug det som du bedst kan lide... Jeg hader streams og bruger altid C funktionerne... Det er et vel mest en smagssag.

1101110100010110000101000001



Det er et vel mest en smagssag.


Nej, C++ streams er typesikre. Det er en markant fordel.
--
I\\'m bloggin\\' it.
http://www.sigkill.dk/blog



men hvordan får man den til altid at skrive hvad der står i cout. jeg ved at dette lyder underligt, men når jeg compiler nogle "lange" programmer i visual c++ så skriver den ikke det som står i cout :S og har ingen anelse af hvorfor, og hvis jeg skriver:

cout << "test";
printf("test2");

så skriver den først test2 og så test hvilket er totalt absurd. er det bare visual c++? hvis ja kan man så gøre noget for at ordne dette?



Prøv at putte en cout.flush(); ind efter cout <<, og måske en fflush(stdout); efter printf(...).
Ellers er der sync_with_stdio som du også kan prøve.
Men jeg vil anbefale at man holder sig til en af de to.



Det er fordi cout og printf hver passer ind i deres eget I/O-framework. Hver af disse frameworks har deres egne buffermekanismer, og derfor bør man, som Bertel nævner, holde sig til ét af dem, eller i det mindste forsøge at synkronisere dem.
--
I\\'m bloggin\\' it.
http://www.sigkill.dk/blog



t