[Filesystem] Problème de taille de contenu de fichier
Bonjour à tous,
J'essaie de mettre le contenu d'un fichier de plusieurs MO dans un char* puis dans un string. Mais, le comportement de mon programme est bisare. Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| string list_str;
char* list_char;
ifstream file("c:\\cpp\\copie\\out.txt",ios::binary);
int size;
// taille du fichier
file.seekg(0,ios_base::end);
size= file.tellg();
file.seekg(0,ios_base::beg);
list_char= new char[size];
file.read(list_char,size);
list_of_packets.assign(list_char,size);
cout<<strlen(list_char)<<endl; //cela m'affiche 2633
cout<<list_of_packets.size()<<endl; // cela m'affiche 19599000 (qui est la taille exacte du fichier)
cout<<list_of_packets<<endl;
cout<<list_char; |
Pourquoi strlen(list_char) fournit-il une valeur différente de list_of_packets.size() alors que c'est justement list_char que j'ai mi dans list_of_packets ?
Quand je vérifie le contenu, list_str contient bien le contenu exact du fichier, mais list_char ne contient qu'une petite partie, et arrête d'afficher lorsque, dans mon fichier , apparait le caractère NUL (identifié avec Notepad+).
Est-cela le problème, comment rectifier et faire en sorte que char* contienne tous le contenu du fichier.
Merci:P