Folosesc de mult functia asta, si am zis sa v-o dau si voua. Poate va ajuta cu ceva.
#include
#include
#include
using namespace std;
string citireFisier(string fisier)
{
// lungimea fisierului ce urmeaza a fi citit
unsigned long lungime;
// unde vor fi salvate in memorie datele
char *buffer;
// streamul de intrare pentru citire
ifstream file(fisier.c_str(),ios::binary);
// se merge la sfarsitu fisierului
file.seekg(0,ios::end);
// returneaza marimea fisierului
lungime = file.tellg();
// se merge la inceputul fisierului pentru citire
file.seekg(0,ios::beg);
// se aloca spatiu pentru citire
buffer = new char[lungime];
// se citeste continutul fisierului
file.read(buffer,lungime);
// se inchide streamul de citire
file.close();
// se returneaza datele citite
return string(buffer);
}
int main()
{
// citim datele din fisierul "fisier.txt"
string data = citireFisier("fisier.txt");
// afisam datele
cout< return 1;
}
O metoda mai eficienta de aflat dimensiunea unui fisier
Pentru windows:
int GetFileSize(const char* pFileName, LONGLONG& fileSize)
{
fileSize = 0;
WIN32_FILE_ATTRIBUTE_DATA fad;
if (!GetFileAttributesEx(pFileName, GetFileExInfoStandard, &fad))
return (-1);
LARGE_INTEGER li;
li.LowPart = fad.nFileSizeLow;
li.HighPart = fad.nFileSizeHigh;
fileSize = li.QuadPart;
return 0;
}
Pentru unix:
int GetFileSize(const char* pFileName, unsigned long long& fileSize)
{
fileSize = 0;
struct stat st;
if (stat(pFileName, &st) == 0)
fileSize = st.st_size;
else
return (-1);
return 0;
}