J'ai regardé des objets binaires en lecture et en écriture en C++ mais j'ai des problèmes. Ça "marche" mais en plus je reçois une énorme sortie d'erreurs/"info".Échec d'exécution en lecture/écriture binaire
Ce que je l'ai fait est
Person p2;
std::fstream file;
file.open(filename.c_str(), std::ios::in | std::ios::out | std::ios::binary);
file.seekg(0, std::ios::beg);
file.read ((char*)&p2, sizeof(p2));
file.close();
std::cout << "Name: " << p2.name;
personne est un struct simple contenant string name
et int age
. Quand je lance le programme, il sort "Nom: Bob" car j'ai déjà créé un programme pour écrire dans un fichier (donc l'objet est déjà dans le nom de fichier).
EN SUS pour produire le nom qu'il génère également:
* glibc détecté * programme: à double corruption gratuit og (de fastttop): ***
Backtrace:
...
carte mémoire:
...
Abandon
Ne pas re-taper le code, il peut introduire des erreurs. __Couper et coller le code__. La lecture/écriture binaire d'un objet ne fonctionnera que si la structure ne contient aucun pointeur. Cette règle doit être appliquée de manière récursive à tous les membres.Donc, si un membre ou membre membre ou membre membre est un pointeur, cela va casser. Sans plus d'informations sur Person, il est difficile de dire si cela fonctionnera réellement. –
Montrez-nous la déclaration de Personne. –
Rappelez-vous qu'un compilateur est autorisé à insérer un remplissage entre les champs dans les structures, les classes et les syndicats. Un autre problème est que les chaînes doivent généralement avoir un espace alloué pour elles, lire dans cet espace, puis assigner à une structure, * à moins que le champ de texte ne soit de taille fixe *. –