Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: cout vai printf?

Sivun loppuun

d0rman7_d0rbeet1e [29.03.2003 23:12:18]

#

Elikkä kuten otsikossakin seisoo, kumpaa tulisi käyttää? (Samaan kastiin menee cin ja scanf, sekä endl ja \n....) Onko näillä jotain oikeaa eroakin, vai onko kyseessä vain makuasia?
Itse käytän tuota jälkimmäistä, koulussa opetettua systeemiä, mutta täällä kaikki tuntuvat käyttävän ensimmäistä. Joten valaiskaa minua, oi gurut.

Antti Laaksonen [30.03.2003 13:21:20]

#

Molemmat tekevät suunnilleen saman asian, cout on C++:ssa ja printf C:ssa. Riippuu siis, kummalla kielellä haluat ohjelmoida.

thefox [31.03.2003 13:30:46]

#

cout on tosiaan se "C++-tapa", eli streamejen kautta ulostellaan, cin vastaava stdinille. Onhan niissä tietty eroja, coutin ollessa kyseessä kääntäjä voi tehdä tyyppitarkastukset sun muut muunnokset, printf:n tapauksessa ei. Sama scanf:ille, lisäksi cin:illä on vaikeampi saada aikaan buffer-overflow:ta.

endl:llä ja \n:llä on sen sijaan suurempi ero. endl ei pelkästään lisää rivinvaihtoa, vaan myös flushaa bufferin, mikä on tietysti rutkasti hitaampaa. Eli käytä ensisijaisesti \n:ää ja vasta sitten kun haluat myös flushata bufferin endl:ää. Bufferin flushaus onnistuu myös "flush":ia käyttämällä, eli: std::cout << "foo\n" << flush;

d0rman7_d0rbeet1e [31.03.2003 15:59:40]

#

Kiitoksia teille. Arvelinkin, että tuo printf olisi vanhempaa perua, koulun opetus kun oli sellaista sillisalaattia, että välillä puhuttiin C-kielestä ja välillä C++:asta niin siitä sitten ottanut selvää mikä oli mitä (naputtelin kuitenkin kympin:).

Ja fawkzille vielä kiitos tuosta puskurin huuhtelun ja virtojen vinkeistä, tosin se ei kerro minulle 1½ -kuukauden (30h) 'ohjelmoijana' mitään:/

Eli kaiken kaikkiaan, kun kerran Cpplussaa meinaan jatkossa opiskella, onko minun vaihdettava - siis onko järkevää vaihtaa - tuosta printf-->cout?

thefox [31.03.2003 23:02:45]

#

Suosittelisin couttia. Turha siihen C:hen on takertua jos meinaat C++:aa opiskella.

Tatu Peltola [22.04.2003 20:21:59]

#

endl ja \n .. nehän ovat ihan samoja?? siellä on kai jotain tämmöstä siellä jossain tiedostoissa: #define endl '\n'

HydeCode [28.04.2003 09:16:17]

#

Tästä tuli mieleeni että...Mun mielestä tuo C++ .NET herjaa cout-komennosta että on jäämässä vanhaksi. Vai oliko jopati koko iostream.h.

Anto nimittäin kääntäessä varotuksen, että tässä vielä toimii, mutta voi tulla ongelmia tulevien kääntäjien kanssa ?!?...Muilla kokemusta ?

thefox [28.04.2003 09:39:51]

#

Jeh, cout lienee jäämässä vanhaksi. Siksi tuleekin käyttää std::cout:ia (ja #include <iostream>). Sinänsä sama asia, mutta jälkimmäisellä cout määritellään std-nimiavaruuteen -- näin ollen vältetään globaalin nimiavaruuden saastuttamiselta.

HydeCode [28.04.2003 15:30:11]

#

Jos satutte tietämään enempi Visual Studio .NET:n sielun elämästä ni vastatkaa myös seuraavaan :)

https://www.ohjelmointiputka.net/keskustelu/1608-visual-cpp-net-apua

Olli Vanhoja [30.04.2003 21:30:23]

#

kumpihan on nopeampi cout vai printf?

Sami [01.05.2003 10:49:25]

#

Kokeile sitä pistämällä se kirjoittamaan sama teksti molemmilla eri tavoilla esim. 10000 kertaa ja mittaa sitten siihen kulunut aika.

Olli Vanhoja [03.05.2003 13:24:27]

#

hmmm... vois joskus :-P

constans [07.05.2003 10:09:10]

#

Uskoisin, että se on myös makukysymys kumpaa käyttää. Jos on tottunut käyttämään printf:ää niin mikäs siinä, mutta cout on tehty lähinnä helpottamaan ohjelmoijan työtä, kuten koko C++-kieli.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta