Domanda

In sostanza, voglio avere il mio programma di recuperare diverse variabili dal disco rigido per l'utilizzo del programma. Credo che, prima di chiedere per i dettagli, dovrei verificare che sia ancora possibile. Lo è?

Se lo è, qual è il modo migliore? Ho visto l'uso di file .ini, ma non so come recuperare i dati specificamente dal file .ini. È lo stesso come file di testo che si è pasticciato con per assicurarsi che le variabili saranno sempre on line x? Per esempio:

ifstream variables("variables.ini");

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

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

//or whatever =/

Sono una specie di a corto di cosa fare qui.

Modifica:. La mia lingua di scelta è C ++

È stato utile?

Soluzione

Le prime domande che dovete affrontare sono il chi e il perché. Le opzioni sul come seguirà da quelli.

Quindi, chi (o cosa) saranno accedere ai dati? Se è solo il programma stesso, allora è possibile memorizzare i dati nel modo desiderato - file binario, xml, database, un file ini, qualsiasi cosa. Tuttavia, se i dati devono essere facilmente accessibili per l'utente in modo che possano cambiare prima di una corsa poi un file di testo come un ini, che può essere facilmente modificato, ha un senso. Al fine di modificare i dati memorizzati in altri formati potrebbe essere necessario scrivere un programma del tutto separato solo per manipolare i parametri memorizzati. Forse questo ha un senso nella propria situazione o forse no, ma sarà più lavoro.

Se si sceglie di andare via ini allora siete sulla strada giusta. Sono solo i file di testo. Un formato comune è di avere sezioni (solitamente tra parentesi), e quindi le coppie chiave / valore all'interno delle sezioni. Di solito le righe di commento iniziano con punto e virgola, un tocco di classe per gli utenti che potrebbero voler capovolgere avanti e indietro tra le impostazioni.

Quindi, qualcosa di simile a questo:

[System]
    datapath = /home/me/data

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

Non dovete preoccuparvi di linee specifiche per i dati. Hai appena letto attraverso il file riga per riga. Le righe vuote o di commento vengono gettati. Si prende atto di ciò che la sezione si è in e si elaborano le coppie chiave / valore.

Ci sono molti modi per memorizzare il file analizzato nel programma. Un semplice può essere quello di concatenare il nome della sezione e la chiave in una chiave per una mappa. Il valore (della coppia chiave / valore) sarebbe i dati per la mappa.

Quindi, "Systemdatapath" potrebbe essere una chiave della mappa e il suo valore sarebbe "/ home / me / dati". Quando il programma ha bisogno di usare i valori sembra proprio in su con il tasto.

Ecco le basi. In definitiva si vuole abbellirla. Per esempio, i metodi per recuperare i valori per tipo. Per esempio. getString (), getInteger (), getFloat (), ecc.

Altri suggerimenti

Si decide il formato del file .ini dell'applicazione. Di solito lavoro con XML perché allora si può organizzare le informazioni dal campo di applicazione e c'è già un gruppo di librerie per gestire l'archiviazione e il recupero di informazioni da alberi XML.

Modifica: per C ++ - http://xerces.apache.org/xerces-c/

Se avete intenzione di essere tirando i valori dai file di frequente, e soprattutto se è necessario aggiornare (persistere) quei valori, un database è una grande opzione. Inoltre vi darà buone prestazioni come il set di dati cresce.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top