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. P>
Ceci est la fonction qui traite de la vérification si une pièce est gratuite ou réservée: p> et ceci est l'hôtel.h fichier p> i Ne comprenez pas complètement ce que cette partie de la boucle tandis que la boucle: p> Si vous avez besoin de plus d'informations, veuillez demander.
Toute astuce et astuces vers la fabrication de cela mieux seraient accueillies. P> p>
3 Réponses :
Lorsque vous faites
room_check.read((char*)this, sizeof(Hotel));
Je suis confus. Est-ce que tailleOf (hotel) code> spécifie combien de caractères (octets) doit être lu?
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));
avec cette déclaration, la taille d'octets d'une instance de l'hôtel est connue: room_check code> contient les données comme flux.
Room_Check.read (((((((Char *) Ceci, Tailleof (Hôtel)); Code> lit les données du flux et le stocke dans l'instance actuelle de
hotel code> (
code>).
Tailleof (Hôtel) Code> Indique la fonction Combien de morsures doivent être lues à partir du flux.
room_check code> contient les données de la classe
hotel code> La commande qu'il est répertorie dans la déclaration de classe: p>
Tailleof (1 * int + 30 * Char + 50 * Char + 10 * Char) Code>. Le contenu du fichier DAT est stocké int It des membres de cette instance très actuelle de
hotel code>. P> p>
Room_Check.read (((Char *) Ceci, Tailleof (Hôtel)); Code> 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. I>" 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 code> code>, 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 ++.