Article View: pl.comp.lang.c
Article #1183Re: sprintf() pytanie
From: Michal Malecki
Date: Wed, 04 Feb 1998 20:35
Date: Wed, 04 Feb 1998 20:35
60 lines
2977 bytes
2977 bytes
Maciej MOCHOL <mmochol@elka.pw.edu.pl> wrote:
: Witam
: Mam pytanko. Czy w C++ powinienem uzywac sprintf() ? Ze printf()
: sie nie uzywa to wiem.
Cos ci sie chyba pochrzanilo (i nie jestes tu wyjatkiem).
W C++ mozna, jak najbardziej uzywac printf, jezeli sie chce. Tylko
MOZNA uzywac lepszej - bo nie wymuszajacej oznaczania typow parametrow -
konstrukcji "cout << wartosc". Tak wiec to nie jest tak, ze sie NIE
uzywa.
: Wiem tez ze jest odpowiednik sprintfa w
: iostream.h - to znaczy jest strumien ktory sobie moge zwiazac z
: stringiem.
Polecam strstream.h . Niespecjalnie chwale proby, jakie z tym
przeprowadzilem (ale to bylo dawno temu i to jeszcze na BC 3.1).
Mozesz poeksperymentowac, w BC 3.1 jest wszystko opisane w pomocy
(strstream).
: Ja jednak lubie sprintf(), ale nie wiem czy powinienem
: go uzywac, bo - jak slyszalem - biblioteka iostream gryzie sie nieco
: z tymi z ANSI C, polega to na jakims buforowaniu, czy cos. Ktos moze
: wie cos wiecej na ten temat ?
Ja tam nic nie wiem. A sprintf z powodzeniem mozna uzywac w C++.
Jezeli chodzi w buforowanie, to moze wyglada troche inaczej w C++,
ale powiedz mi szczerze: _gdzie_ ty widzisz jakiekolwiek buforowanie
w takim typie danej ? W plikach - owszem. Konsola - owszem. Ale pamiec ?
Poniewaz mam niespecjalnie przyjemne doswiadczenia z strstream, tak tez
raczej zalecam uzywac sprintf, zwlaszcza, ze jesli chodzi o formatowanie
wyglada to troche prosciej:
char buf[180];
sprintf( buf, "%-17s --- %2d.%02d --- %17s\n", beg, il, tl, end );
Niz - odpowiednio w C++:
strstream sout;
sout << setw(17) << setioflags( ios::right ) << beg;
sout << setw(2) << setioflags( ios::left ) << il;
sout << setfill( '0' ) << tl;
sout << setfill( ' ' ) << setw( 17 ) << end << endl;
Nie jestem w 100% pewny, czy dobrze napisalem te manipulatory. Jezeli nie,
niech mnie ktos poprawi. Niestety, nie mam pod reka referencji, bo
u nas nie ma mana do C++ (tak to jest niestety z supportem tego jezyka
na UNIX'ie!).
Pozdrawiam,
--
.---. . . - Michal Malecki <mmalecki@technologist.com>/The things that
\___ ,-. | , |- ,-. ,- mUd: zly.mud.org.pl 4000. /can't destroy you
\ |-' |< | | | | uRl: www.kis.p.lodz.pl/~sektor /make you
`---' `-' ' ` `' `-' ' pGp: sektor@zly.kis.p.lodz.pl /stronger...
Technical Details
Message-ID:
<6bajen$mgd@polonez.man.lodz.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!uucp-gw.cyf.gov.pl!news.memax.krakow.pl!news.task.gda.pl!news.man.lodz.pl!not-for-mailReferences:
<Pine.GSO.3.95.980203184811.29399D-100000@neutron.elka.pw.edu.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!uucp-gw.cyf.gov.pl!news.memax.krakow.pl!news.task.gda.pl!news.man.lodz.pl!not-for-mail From: Michal Malecki <sektor@zly.kis.p.lodz.pl> Newsgroups: pl.comp.lang.c Subject: Re: sprintf() pytanie Date: 4 Feb 1998 20:35:35 GMT Lines: 60 Message-ID: <6bajen$mgd@polonez.man.lodz.pl> References: <Pine.GSO.3.95.980203184811.29399D-100000@neutron.elka.pw.edu.pl> NNTP-Posting-Host: sektor@zly.kis.p.lodz.pl User-Agent: tin/pre-1.4-980105 (UNIX) (SunOS/5.5.1 (i86pc)) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit