Permalänk

fstream problem [C++]

Hej, jag försöker läsa en BMP fil med fstream. det går bra med vissa bmp filer and inte. (Alla är 24bit Windows) WindowsBMPHeader
Så här ser min kod ut.

// test.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <vector> #include <iostream> #include <string> #include <windows.h> #include <fstream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { ifstream inFil; string filnamn; cout << "Enter filname" << endl; cin >> filnamn; //Open file and read it byte by byte inFil.open(filnamn.c_str()); //Open file if(!inFil.is_open()) //is it a valid file? { cout << "Invalid filename" << endl; return(1); } inFil.seekg(0, ios::end); //Go to end of file size_t fileSize = inFil.tellg(); //Get size of file from the current position inFil.seekg(0, ios::beg); //Go to start of file. vector<char> Bytes(fileSize, 0); //variable that stores the BMP in bytes inFil.read(&Bytes[0], fileSize); //Store the BMP if(inFil.fail()){cout << "Something went wrong!" << endl; return(1);} inFil.close(); //Close the file. Sleep(10000); }

Dessa två fungerar:
http://www.deadleaves.nu/DUMP/Public/test1.bmp
http://www.deadleaves.nu/DUMP/Public/test2.bmp

Medans Dessa två inte gör det:
http://www.deadleaves.nu/DUMP/Public/test3.bmp
http://www.deadleaves.nu/DUMP/Public/test4.bmp

Den ger mig inFil.fail() på Test3-4.bmp medans test1-2 fungerar utmärkt.

EDIT: Hittat felet. En moderator kan stänga tråden. Jag ber om ursäkt.

Visa signatur

Denon AVR-1801 | Dali Blue 5005 | Turtle Beach Audio Advantage Micro II

Permalänk
Hedersmedlem

Re: fstream problem [C++]

Citat:

Ursprungligen inskrivet av Lisianthus
EDIT: Hittat felet. En moderator kan stänga tråden. Jag ber om ursäkt.

Att låsa verkar onödigt, men om du skriver ut lösningen kan kanske någon annan ha glädje av den i framtiden.

Permalänk

Problemet låg i en helt annan del av programmet. Ett väldigt litet och slarvigt mistag med att jag blandade ihop hexa och decimal när jag skrev min nya fil.

Visa signatur

Denon AVR-1801 | Dali Blue 5005 | Turtle Beach Audio Advantage Micro II