Question

En fait, je veux avoir mon programme récupérer différentes variables à partir du disque sur le disque dur pour une utilisation dans le programme. Je suppose que, avant de demander pour plus de détails, je vérifie cela est encore possible. Est-il?

Dans ce cas, quelle est la meilleure façon? Je l'ai vu l'utilisation des fichiers .ini, mais je ne sais pas comment récupérer des données spécifiquement à partir des fichiers .ini. Est-ce le même que celui d'un fichier texte que vous avez sali avec pour faire des variables sûres seront toujours sur la ligne x? Par exemple:

ifstream variables("variables.ini");

//some code later
//assume line 'x' holds a variable

if(variables.good())
{
   variables.get(x);
}

//or whatever =/

Je suis un peu à une perte de ce qu'il faut faire ici.

Modifier. Ma langue de choix est C ++

Était-ce utile?

La solution

Les premières questions que vous devez répondre sont qui et pourquoi. Vos options sur le comment de suivre ceux-ci.

Qui (ou quoi) auront accès aux données? S'il est juste le programme lui-même, vous pouvez stocker les données mais que vous voulez - fichier binaire, XML, base de données, fichiers ini, peu importe. Toutefois, si les données doivent être facilement accessibles à l'utilisateur afin qu'ils puissent changer avant une course, puis un fichier texte comme un ini, qui peut être facilement modifié, est logique. Pour modifier les données stockées dans d'autres formats, vous devrez peut-être écrire un programme entièrement séparé juste pour manipuler les paramètres stockés. Peut-être que cela a du sens dans votre situation ou peut-être pas, mais ce sera plus de travail.

Si vous choisissez d'aller la route ini alors vous êtes sur la bonne voie. Ils ne sont que des fichiers texte. Un format commun est d'avoir des sections (généralement entre parenthèses), puis les paires clé / valeur à l'intérieur des sections. commenter habituellement les lignes commencent par virgule, une belle touche pour les utilisateurs qui veulent retourner dans les deux sens entre les réglages.

Alors quelque chose comme ceci:

[System]
    datapath = /home/me/data

[Application]
    start_count = 12
;   start_count = 20  //this is a comment

Vous n'avez pas à vous soucier des lignes spécifiques pour vos données. Vous venez de lire à travers la ligne de fichiers en ligne. Vides ou lignes commentaire se faire secouer violemment. Vous prenez note de ce que l'article que vous êtes et vous traitez les paires clé / valeur.

Il y a plusieurs façons de stocker le fichier analysé dans votre programme. Un simple peut être à concaténer le nom de la section et clé dans une clé pour une carte. La valeur (de la paire clé / valeur) serait les données pour la carte.

« Systemdatapath » pourrait être une clé de carte et sa valeur serait « / home / moi / data ». Lorsque votre programme a besoin d'utiliser les valeurs qu'il regarde juste par clé.

Ce sont les bases. En fin de compte, vous voulez l'embellir. Par exemple, les méthodes pour récupérer les valeurs par type. Par exemple. getString (), getInteger (), getFloat (), etc.

Autres conseils

Vous décidez le format du fichier .ini de votre application. Je travaille habituellement avec XML parce que vous pouvez organiser vos informations par la portée et il y a déjà un tas de libs pour gérer le stockage et la récupération des informations à partir d'arbres XML.

Edit: C ++ - http://xerces.apache.org/xerces-c/

Si vous allez à tirer les valeurs des fichiers fréquemment, et surtout si vous avez besoin de mettre à jour (persistent) ces valeurs, une base de données est une excellente option. Il vous donnera également de bonnes performances en tant que votre ensemble de données augmente.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top