Joy Maitland
11/19/2008 9:36:00 AM
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];
> }