0
votes

Lecture et écriture à un fichier .DAT en C ++

J'apprends actuellement à programmer en C ++. Je me fraye un chemin à travers un projet de programmation que j'ai trouvé en ligne et j'essaie de recréer la ligne de ligne par ligne, pourquoi certaines choses fonctionnent comme elles le font. Le projet est un simple système de réservation d'hôtel disposant d'un système de menu et enregistre l'entrée des utilisateurs I.e Nom, adresse, numéro de téléphone, etc.

Je cherche à essayer de comprendre ce que certaines parties de ce code font. Je souhaite prendre les utilisateurs et l'enregistrer dans un fichier .DAT, mais cela ne semble pas fonctionner et je ne sais pas pourquoi. Existe-t-il un meilleur moyen de lire et d'écrire dans un fichier texte.

Ceci est la fonction qui traite de la vérification si une pièce est gratuite ou réservée: xxx p> C'est le code qui livre une chambre: xxx

et ceci est l'hôtel.h fichier xxx

i Ne comprenez pas complètement ce que cette partie de la boucle tandis que la boucle: xxx

Si vous avez besoin de plus d'informations, veuillez demander. Toute astuce et astuces vers la fabrication de cela mieux seraient accueillies.


7 commentaires

Room_Check.read (((Char *) Ceci, Tailleof (Hôtel)); Faites-vous en réalité ce que vous pensez qu'il fait?


" Je veux prendre les utilisateurs saisir et l'enregistrer dans un fichier .dat, mais cela ne semble pas fonctionner et je ne suis pas sûr de savoir pourquoi. " Qu'est-ce que "ne semble pas fonctionner" signifie? Qu'est-ce que vous attendez-vous et ce qui arrive réellement?


@ MathCoder101 Comme il n'y a pas de références ni de pointeurs dans le type , il y a de bonnes chances qu'il fonctionne réellement. (Ne pas dire que c'est une bonne idée.)


C'est la chose, je ne suis pas tout à fait sûr de ce que cela fait, mais je devine que cela passe dans une fonte de caractère et obtient la taille du flux basé sur la taille de la variable de la matrice dans l'hôtel de classe.


Je m'attends à ce qu'il prenne les entrées de l'utilisateur et à enregistrer cela dans un fichier .DAT. Cependant, lorsque je mets de l'information. Il imprime à l'écran cette ligne "Votre chambre est réservée !. Mais quand j'ouvre le fichier .dat, il n'y a rien de là.


BTW, il n'y a pas de signification ou de format standard pour un fichier ".dat". C'est juste un autre fichier et vous déterminez son format.


Je vous recommande de passer à travers un bon livre au lieu de trouver du code en ligne et d'essayer de déterminer comment cela fonctionne. Il sera probablement beaucoup plus facile, surtout car il y a des tonnes de codes de mauvais C ++.


3 Réponses :


1
votes

Lorsque vous faites

room_check.read((char*)this, sizeof(Hotel));


1 commentaires

Je suis confus. Est-ce que tailleOf (hotel) spécifie combien de caractères (octets) doit être lu?



4
votes

hotel code> est un type entièrement autonome sans allocations de tas ni références à des objets externes. Par conséquent, on peut sérialiser son état en écrivant simplement la représentation de l'objet en mémoire et désériorize en faisant le contraire.

room_Booking.write((char*)this,sizeof(Hotel));


0 commentaires

1
votes

room_check contient les données comme flux. Room_Check.read (((((((Char *) Ceci, Tailleof (Hôtel)); lit les données du flux et le stocke dans l'instance actuelle de hotel ( ). Tailleof (Hôtel) Indique la fonction Combien de morsures doivent être lues à partir du flux.

room_check contient les données de la classe hotel La commande qu'il est répertorie dans la déclaration de classe: xxx

avec cette déclaration, la taille d'octets d'une instance de l'hôtel est connue: Tailleof (1 * int + 30 * Char + 50 * Char + 10 * Char) . Le contenu du fichier DAT est stocké int It des membres de cette instance très actuelle de hotel .


0 commentaires