| |
| From: James Kanze <kanze@gabi-soft.de> |
| Newsgroups: comp.lang.c++.moderated |
| Subject: Re: binary iostreams ? |
| Date: 3 Feb 2001 14:28:19 -0500 |
| Message-ID: <86lmro86qp.fsf@alex.gabi-soft.de> |
| |
| "Plinio Conti" <plinio.contiNO@SPAMMINGmclink.it> writes: |
| |
| |> Why std c++ library stream classes are only text-oriented? |
| |
| Because that is the only universally recognized format. |
| |
| |> I mean, if I want to write an int, a float, etc. AS IT IS I can't |
| |> use streams, because they write and read a human readable text |
| |> format of numbers. |
| |
| Correct. |
| |
| |> Does anyone know how to solve the problem? |
| |
| It depends on what you really want to do. If you are just dumping a |
| block of memory to disk, in order to free up memory, and will reread it |
| later in the same run of the same program, ostream::write and |
| istream::read are what you need. Note, however, that this ony works 1) |
| in the same run of the same program, and 2) for PODs without pointers. |
| |
| If you are writing something that will be read by another program, or a |
| later run of the same program, you'll have to define a specific format |
| to use, and implement streams to input and output that. If you are |
| writing something that will be read by an existing program, or be |
| transmitted over a network to another machine, you will have to find out |
| what protocol is expected, and adher to it. |
| |
| |> Any public library? |
| |
| Not that I know of. I think that there is a library somewhere that |
| outputs in format RPC, or maybe some Internet format. |
| |
| |> What do you think about this choice? |
| |
| What other choice is possible? It's not reasonable to ask the standard |
| to support all binary formats, and it's not reasonable for it to favor |
| any one of them. Given that, what else can you do. |
| |
| -- |
| James Kanze mailto:kanze@gabi-soft.de |
| Conseils en informatique orientée objet/ |
| Beratung in objektorientierter Datenverarbeitung |
| Ziegelhüttenweg 17a, 60598 Frankfurt, Germany Tel. +49(069)63198627 |
| |