C++, lees waardes uit XML file for C++ variables

Status
Niet open voor verdere reacties.

bepetemish

Gebruiker
Lid geworden
18 sep 2007
Berichten
21
Goedendag,

Ik heb rond gekeken en wel het 1 en ander gevonden door google to gebruiken maar dat was in de verste verte niet specefiec genoeg om mij te helpen.

Ik zal even uitleggen wat ik wil doen.

Zeg dat ik een C++ programma heb met de volgende variablen:
char test;
int test2;

En dit is mijn XML bestand:
<?xml version="1.0" ?>
<test=a/>
<test2=1/>

Nu wil mijn C++ programma de waarden uit het xml bestand toewijzen aan char test en int test2.

Hoe kan ik dit doen? En als het makkelijker is om de .xml file anders optebouwen laat het me gerust weten ;).

met vriendelijke groet,

Bepetemish


ps. mag ik deze post copieren en ook in de XML sectie stoppen als ik geen antwoord krijgt op mijn bovenstaande vraag??
ps2. hmmm, ik heb nog is even rond zitten kijken en begrijp eigenlijk zelf niet waarom ik .xml wil. Kan net zo goed .txt gebruiken.. In dat geval is het probleem waardes halen uit een .txt bestand voor C++ variables.
 
Laatst bewerkt:
Het gemakelijkste zou zijn als je nu eens simpelweg een tekst bestand ervan maakt

als je toch xml files wilt inlezen kun je a) een bestaande library gaan gebruiken
b) iets dergelijk proberen
Code:
#include <fstream.h>

int main()
{

string strBuffer;
char   shBuffer[80];


ifstream XML_file;
XML_file.open("test.xml");

while( !XML_file.eof() )
{
     XML_file.getline( shBuffer,sizeof(shBuffer) );
     strBuffer = shBuffer;

     //Functies voor het filteren van substrings
     //Best nog een xml klasse maken voor al de nodes in te steken en de eventuele node-parameters...
}

XML_file.close();

}
Je kunt hiermee evetueel een ini-bestand inlezen, ik heb zo een klasse al gemaakt als je wilt geef ik hem;-)
 
Laatst bewerkt:
Ja graag. Ik heb ook nog even rondgekeken en ik denk dat ik voor .ini ga. Dus als je voorbeeldjes of tips heb thoor ik het graag :thumb:
 
Ik heb je even snel een voorbeeld gemaakt. ('t is enkel een voorbeeld, je zult hem zelf moeten voorzien van checks e.d.)

Code:
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main(int argc, char *argv[])
{
    char test;
    int test2;
    
    ifstream input;
    string temp;
    input.open("settings.txt");
    if(!input.is_open()) { return 1; }
    
    while(!input.eof())
    {
        getline(input, temp);
        if(temp.find("[test]") == 0)
        {
            temp.erase(0, strlen("[test]") + 1); 
            test = temp[0];
        } else
        if(temp.find("[test2]") == 0)
        {
            temp.erase(0, strlen("[test2]") + 1);
            test2 = atoi(temp.c_str());          
        }
    }
    input.close();
    
    cout << "char test: " << test  << endl;
    cout << "int test2: " << test2 << endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Settings.txt:
[test] a
[test2] 3
 
Hoi, zie bijlage voor ini-handler!

Het enige dat je moet doen is bij de constructor de naam ingeven van het ini bestand!
Voor de rest van de functies zou ik eens kijken naar de bijlage:-)

Als iets niet geheel duidelijk is moet je het maar zeggen hé!

PS
Deze ini-handler is wss voor verbetering vatbaar maar het is al een ouder "project"
als ik het zie zitten maak ik wel eens een versie met templates en andere coole stuff:p
 

Bijlagen

Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan