By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
455,125 Members | 1,257 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 455,125 IT Pros & Developers. It's quick & easy.

Stream vs Buffer

P: n/a
Hi,
In one of my interview i was asked the difference between Stream and Buffer.
can anybody explain the difference.

Thanks
Jul 23 '05 #1
Share this Question
Share on Google+
5 Replies


P: n/a
On Sat, 23 Jul 2005 14:06:07 +0400, Sandy <a@a.com> wrote:
Hi,
In one of my interview i was asked the difference between Stream and
Buffer.
can anybody explain the difference.


Standard streams are just mere formatters. They use streambufffers to do
actual IO.

--
Maxim Yegorushkin
<fi****************@gmail.com>
Jul 23 '05 #2

P: n/a
Maxim Yegorushkin wrote:
On Sat, 23 Jul 2005 14:06:07 +0400, Sandy <a@a.com> wrote:
Hi,
In one of my interview i was asked the difference between Stream and
Buffer.
can anybody explain the difference.


Standard streams are just mere formatters. They use streambufffers to do
actual IO.

As I understand things (and that may not be well), the default iostream has
a buffer capacity of 1, and therefore isn't really a buffer at all.
Perhaps Dietmar can clear this up?
--
If our hypothesis is about anything and not about some one or more
particular things, then our deductions constitute mathematics. Thus
mathematics may be defined as the subject in which we never know what we
are talking about, nor whether what we are saying is true.-Bertrand Russell
Jul 23 '05 #3

P: n/a
Steven T. Hatton wrote:
Maxim Yegorushkin wrote:
On Sat, 23 Jul 2005 14:06:07 +0400, Sandy <a@a.com> wrote:
Hi,
In one of my interview i was asked the difference between Stream and
Buffer.
can anybody explain the difference.


Standard streams are just mere formatters. They use streambufffers to do
actual IO.

As I understand things (and that may not be well), the default iostream
has a buffer capacity of 1, and therefore isn't really a buffer at all.
Perhaps Dietmar can clear this up?

Whoops! I meant to say 'isn't really buffered at all'.
--
If our hypothesis is about anything and not about some one or more
particular things, then our deductions constitute mathematics. Thus
mathematics may be defined as the subject in which we never know what we
are talking about, nor whether what we are saying is true.-Bertrand Russell
Jul 23 '05 #4

P: n/a
On Sat, 23 Jul 2005 15:12:36 +0400, Steven T. Hatton
<ch********@germania.sup> wrote:
As I understand things (and that may not be well), the default iostream
has a buffer capacity of 1, and therefore isn't really a buffer at all.


I'm interested why would you care?

--
Maxim Yegorushkin
<fi****************@gmail.com>
Jul 23 '05 #5

P: n/a
Steven T. Hatton wrote:
As I understand things (and that may not be well), the default iostream
has a buffer capacity of 1, and therefore isn't really a buffer at all.
Perhaps Dietmar can clear this up?


What is a "default iostream"? There are eight standard stream objects
(cin, cout, cerr, clog and their wide character counterparts). The
standard does not state whether these are buffered or not. Essentially,
whether they are buffered on stream buffer level normally depends on
the implementation strategy with respect to the standard C stream
(stdin, stdout, and stderr): by default, the C and C++ streams are
in some form synchronized, i.e. you can mix input and output of the
C and C++ streams and the character sequences are still in the order
the output was done. To achieve this, the C++ stream buffers are
either unbuffered and use the standard interface of the C streams
internally or the C++ stream buffers somehow share their buffer with
the corresponding C streams. The latter generally only works if the
implementation controls both the C and the C++ implementation. In
any case, on the C level the streams are typically always buffered
unless the C stream is setup explicity be unbuffered.

For all other IOStreams in the standard C++ library, e.g. file and
string streams, it is safe to assume that they are buffered. Whether
user-defined streams are buffered or not depends on the implementation
of the corresponding stream buffer but obviously the C++ standard does
not make any statement here. That is, in summary most stream buffers
are likely to be buffered but the standard does not guarantee anything
in this area. Of course, I'd recommend that all stream buffers should
do actual buffering because this can be used by many algorithms in the
standard C++ library: these can be specialized to cope with stream
buffers specially and e.g. bypass the stream buffer interface in many
interesting situations.
--
<mailto:di***********@yahoo.com> <http://www.dietmar-kuehl.de/>
<http://www.eai-systems.com> - Efficient Artificial Intelligence
Jul 24 '05 #6

This discussion thread is closed

Replies have been disabled for this discussion.