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 :
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 ?
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;
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![]()
Partager