🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #1183

Re: sprintf() pytanie

#1183
From: Michal Malecki
Date: Wed, 04 Feb 1998 20:35
60 lines
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-mail
References: <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