c ++ - hvordan kopierer jeg indholdet af en fil til virtuel hukommelse?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en lille fil, jeg går over det og tæller antallet af bytes i det:


while(fgetc(myFilePtr) != EOF)
{

   numbdrOfBytes++;

}


Nu tildeler jeg virtuel hukommelse af samme størrelse:


BYTE* myBuf = (BYTE*)VirtualAlloc(NULL, numbdrOfBytes, MEM\_COMMIT | MEM\_RESERVE, PAGE\_READWRITE);


Jeg vil nu kopiere indholdet af min fil til nyBuf. Hvordan gør jeg det?


Tak!

Bedste reference


I omrids:


FILE * f = fopen( "myfile", "r" );
fread( myBuf, numberOfBytes, 1, f );


dette antager, at bufferen er stor nok til at holde indholdet af filen.

Andre referencer 1


Overvej også at bruge hukommelseskartede filer i stedet. [5]

Andre referencer 2


Prøv dette:


#include <fstream>
#include <sstream>
#include <vector>

int readFile(std::vector<char>& buffer)
{
    std::ifstream       file("Plop");
    if (file)
    {
        /*
         * Get the size of the file
         */
        file.seekg(0,std::ios::end);
        std::streampos          length = file.tellg();
        file.seekg(0,std::ios::beg);

        /*
         * Use a vector as the buffer.
         * It is exception safe and will be tidied up correctly.
         * This constructor creates a buffer of the correct length.
         *
         * Then read the whole file into the buffer.
         */
        buffer.resize(length);
        file.read(&buffer[0],length);
    }
}