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 : Sélectionner tout - Visualiser dans une fenêtre à part
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