delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2000/08/26/13:32:06.1

From: "Tim 'Zastai' Van Holder" <zastai AT hotmail DOT com>
Newsgroups: comp.os.msdos.djgpp
References: <8o1930$36j$1 AT info DOT cyf-kr DOT edu DOT pl>
Subject: Re: binary I/O bug ?
Lines: 53
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 5.50.4133.2400
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400
Message-ID: <35ep5.27500$Ee.200783@afrodite.telenet-ops.be>
Date: Thu, 24 Aug 2000 18:47:27 GMT
NNTP-Posting-Host: 213.224.92.242
X-Trace: afrodite.telenet-ops.be 967142847 213.224.92.242 (Thu, 24 Aug 2000 20:47:27 MET DST)
NNTP-Posting-Date: Thu, 24 Aug 2000 20:47:27 MET DST
Organization: Pandora - Met vlotte tred op Internet
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

"Rafał Maj" <r_maj AT poczta DOT onet DOT pl> wrote in message
news:8o1930$36j$1 AT info DOT cyf-kr DOT edu DOT pl...
> I think ther is bug in I/O binary mode :
>
> 1)
> I can't open ofstream / ifstream in ios::binary mode.
> When I use :
>   ifstream plik;  plik.open("test.txt",ios::binary); plik<<"OK ;)";
> plik.close();
> then test.txt is empty. When I don't use ios::binary, then everything is
OK.
No, that means there's a bug in non-binary mode: You're using an input
stream
for output. Try using 'ofstream plik;' instead. You may also want to
explicitly
mention that you're doing output (ie use 'ios::binary | ios::out' as arg to
open()).

> 2) Functions write / read from class ifstream/ofstream, with should be
> always binary, are working like in text mode (changing some chars, I think
> it was #13 -> #10 #13 or somethink like this)
Wrong. read and write are supposed to behave according to the flags passed
on open; so they should only do binary I/O if you passed ios::binary.

-- excerpt from the ANSI standard --
basic_ostream& write(const char_type* s, streamsize n);
* Effects: Obtains characters to insert from successive locations of an
array whose first element is designated by s.
* Characters are inserted until either of the following occurs:
  - n characters are inserted;
  - inserting in the output sequence fails (in which case the function calls
setstate(badbit),
    which may throw ios_base::failure (27.4.4.3)).
-- end excerpt --
So it simply inserts chars into the underlying streambuf; UNFORMATTED, yes,
but not
without binary/text handling.


> QUESTION :
> Where I can download new version of  DJGPP that don't have this bug,
> or how can I do workaround of this bug ?
Workaround: Learn the language properly before complaining about the
compiler.
Please direct further such questions to comp.lang.c++.

--
Hi, I'm a signature virus. plz set me as your signature and help me spread
:)




- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019