[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.c++

iostream - BYTE array

Joy Maitland

11/19/2008 9:13:00 AM

how to use <iostream> to read a file to a const BYTE array?

const BYTE *pbBinary
3 Answers

Maxim Yegorushkin

11/19/2008 9:23:00 AM

0

On Nov 19, 9:13 am, Joy Maitland <iiu...@yahoo.com> wrote:
> how to use <iostream> to read a file to a const BYTE array?
>
> const BYTE *pbBinary

You don't normally read a file into a pointer. You read a file into an
array and point that pointer to that array:

#include <iostream>
#include <vector>
#include <iterator>

int main()
{
typedef unsigned char BYTE;
// read from std::cin
std::vector<BYTE> bytes(
(std::istreambuf_iterator<char>(std::cin))
, (std::istreambuf_iterator<char>())
);
if(bytes.empty())
; // no bytes have been read

BYTE const* pbBinary = &bytes[0];
}

--
Max

Joy Maitland

11/19/2008 9:36:00 AM

0

why when i change the code from std::cin to read from file
c:/test2.xml I got error

=======================
typedef unsigned char BYTE;
std::ofstream file1("c:/test2.xml");

// read from std::cin
std::vector<BYTE> bytes(
(std::istreambuf_iterator<char>(file1))
, (std::istreambuf_iterator<char>())
);
if(bytes.empty())
; // no bytes have been read

BYTE const* pbBinary = &bytes[0];

===========================

1>d:\snd\remote\remotedemo\app\virtualawear\main.cpp(31) : error
C2440: '<function-style-cast>' : cannot convert from 'std::ofstream'
to 'std::istreambuf_iterator<_Elem,_Traits>'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> No constructor could take the source type, or constructor
overload resolution was ambiguous

============================






On Wed, 19 Nov 2008 01:22:44 -0800 (PST), Maxim Yegorushkin
<maxim.yegorushkin@gmail.com> wrote:

>On Nov 19, 9:13?am, Joy Maitland <iiu...@yahoo.com> wrote:
>> how to use <iostream> to read a file to a const BYTE array?
>>
>> const BYTE *pbBinary
>
>You don't normally read a file into a pointer. You read a file into an
>array and point that pointer to that array:
>
> #include <iostream>
> #include <vector>
> #include <iterator>
>
> int main()
> {
> typedef unsigned char BYTE;
> // read from std::cin
> std::vector<BYTE> bytes(
> (std::istreambuf_iterator<char>(std::cin))
> , (std::istreambuf_iterator<char>())
> );
> if(bytes.empty())
> ; // no bytes have been read
>
> BYTE const* pbBinary = &bytes[0];
> }

Maxim Yegorushkin

11/19/2008 10:14:00 AM

0

On Nov 19, 9:36 am, Joy Maitland <iiu...@yahoo.com> wrote:
> why when i change the code from std::cin to read from file
> c:/test2.xml  I got error
>
> =======================
> typedef unsigned char BYTE;
>                 std::ofstream file1("c:/test2.xml");

Becuase you are using an output stream, rather than an input. Change
ofstream to ifstream.

--
Max