Ich versuche eine Art primitive Konfigurationsdatei zu basteln… nichts großes, einfach nur eine Textdatei… bisher soll da eigentlich nur drinstehen:
„MenuStyle:set1“
Ich weiß wie ich die Zeilen einlesen könnte… Aber ich weiß nicht, wie ich prüfen kann, ob in der gerade eingelesenen Zeile „MenuStyle:“ steht und danach „set1“ in eine Variable speichern kann.
Ich versuche eine Art primitive Konfigurationsdatei zu
basteln… nichts großes, einfach nur eine Textdatei… bisher
soll da eigentlich nur drinstehen:
„MenuStyle:set1“
Ich weiß wie ich die Zeilen einlesen könnte… Aber ich weiß
nicht, wie ich prüfen kann, ob in der gerade eingelesenen
Zeile „MenuStyle:“ steht und danach „set1“ in eine Variable
speichern kann.
Soll das in C++ sein? Oder in C?
Soll nur ein einziger Name mit Wert
eingelesen werden oder ganz viele?
Wohinein sollen dann die Daten ein-
gelesen werden? Ein Feld?
Das sollte besser C++ sein, wenn es C ist geht es auch, hauptsache es klappt
Soll nur ein einziger Name mit Wert
eingelesen werden oder ganz viele?
Mit der Zeit werden es bestimmt mehrere…
Wohinein sollen dann die Daten ein-
gelesen werden? Ein Feld?
Ähm… jetzt bin ich etwas verwirrt… in meinem angegebenem Code wird ein Array initialisiert… den Code hab ich übrigens als Snippet im Internet gefunden. Und in das Array soll erstmal eine Zeile gelesen werden, die nötigen Werte kommen in separate Variablen.
Ähm… jetzt bin ich etwas verwirrt… in meinem angegebenem
Code wird ein Array initialisiert… den Code hab ich übrigens
als Snippet im Internet gefunden. Und in das Array soll
erstmal eine Zeile gelesen werden, die nötigen Werte kommen in
separate Variablen.
Wie sieht denn das Array konkret aus? Und
wie sehen die „separaten Variablen“ konkret
aus?
Und wie sehen die „separaten Variablen“ konkret
aus?
Genau genommen sehen die noch garnicht aus… sollen Char
Zeiger werden.
Aha. Dann würde ich einfach ein
assoziatives Array verwenden, da
kannst Du dann einfach über:
...
feld["MenuStyle"] = "set1";
...
oder so
...
string s1 = feld["MenuStyle"];
...
zugreifen. Man würde dazu eine sog. hash-Map
verwenden, das ist aber derzeit in C++ für
Anfänger zu undurchsichtig, daher besser
erstmal eine „normale“ std::map nehmen.
Dann würde ich eine extra-Funktion für
das Einlesen nehmen. Diese öffnet die
Datei und schreibt die Daten in das Feld,
z.B. so etwa (quick hack):
#include
#include
#include
#include
typedef std::map Map;
using namespace std;
bool einlesen\_von(const string& fname, Map& feld)
{
ifstream fh(fname.c\_str()); // Datei oeffnen
if(! fh) return false; // pruefen
string zeile; // zeilenweise einlesen
while(getline(fh, zeile)) {
size\_t pos = zeile.find(':'); // ':' suchen und Position merken
if(pos != string::npos) { // ist es drin? string::npos =\> nicht
feld[zeile.substr(0, pos)] = zeile.substr(pos+1); // eintragen
}
}
return true;
}
int main(int argc, char \*argv)
{
Map feld; // da kommt alles rein
einlesen\_von("daten.txt", feld); // und zwar hier
cout first " second
Grüße
CMБ
Hi DarkDragon.
Nur eine kurze Anmerkung.
Wenn das Format deiner Konfigurationsdatei noch nicht festgelegt ist, könntest du das im Stile der Ini-Dateien machen.
[CONFIG]
MenuStyle=set1
Für diese gibt es bereits eine vorgefertigte API (zumindest für WIN, Linux weiß ich nicht auswendig), und du bräuchtest das Rad nicht nochmal neu zu erfinden. http://msdn.microsoft.com/en-us/library/ms724875%28V…