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.
Molemmat tekevät suunnilleen saman asian, cout on C++:ssa ja printf C:ssa. Riippuu siis, kummalla kielellä haluat ohjelmoida.
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;
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?
Suosittelisin couttia. Turha siihen C:hen on takertua jos meinaat C++:aa opiskella.
endl ja \n .. nehän ovat ihan samoja?? siellä on kai jotain tämmöstä siellä jossain tiedostoissa: #define endl '\n'
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 ?
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.
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
kumpihan on nopeampi cout vai printf?
Kokeile sitä pistämällä se kirjoittamaan sama teksti molemmilla eri tavoilla esim. 10000 kertaa ja mittaa sitten siihen kulunut aika.
hmmm... vois joskus :-P
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.