2017-10-13 13 views
0

Je veux créer une base de données de livres pour enregistrer les livres que j'ai lus. Jusqu'à présent, j'ai une structure pour une entrée de livre.Lecture/écriture de plusieurs struc- tures de taille inconnue dans le fichier C++

struct Entry 
{ 
    string title; 
    string author; 
    int pages; 
}; 

Comme vous pouvez le voir, les variables title et author ont une taille indéterminée. Je voudrais stocker plusieurs structures dans un fichier, puis lire toutes ces structures quand je veux afficher la base de données.

Comment est-ce que je devrais lire/écrire plusieurs de ces structures d'un dossier? Devrais-je avoir des tailles prédéterminées? S'il vous plaît fournir un exemple.

+1

Vous auriez besoin d'inventer un format de fichier que les deux décrit et contient les données par exemple: etc. –

+1

Qu'avez-vous fait jusqu'ici? Pouvez-vous ajouter du code, comment écrire dans des fichiers? – OutOfBound

+0

XML ou JSON pourrait être un bon format pour enregistrer ces informations – rak007

Répondre

1

vous pouvez facilement stocker dans un format CSV de la manière suivante:

title_1,author_1,pages_1,title_2,author_2,pages_2,title_3,auth... 

lors de la lecture en arrière le fichier, Parse le fichier en fonction de vos séparateurs et vous revoir vos données.

modifier: comme vous a suggéré Setchell @ Mark ne devriez pas utiliser « , » comme séparateur, car une virgule peut aussi faire partie du titre lui-même. vous devriez plutôt utiliser un caractère plus rare comme séparateur, ce qui n'est pas très souvent utilisé dans les titres de livres possibles. quelques exemples sont « ; » « | » ou « # » ou même des caractères non imprimables

+1

Comme les virgules peuvent apparaître dans les titres de livres, ils ne sont peut-être pas les meilleurs à utiliser comme séparateurs pour un CSV, car une virgule dans le titre va faire croire à votre auteur. Vous pouvez être plus heureux avec '|' comme séparateurs ou même comme une valeur nulle. –

+0

bonne suggestion –