Textdatei Teilweise auslesen
-
Hallo Leute,
ich bin ein ziemlicher c++ neuling und möchte nun eine Textdatei auslesen, deren Inhalt z.B. so aussieht:
Produkt-Nr = "1100";Beschreibung = "Bücherregal"
Wie kann ich nun in C++ diese Datei auslesen und z.B. nur den Wert der Beschreibung, also den in den Hochkomatas auslesen und in einer Variable speichern.
Muss ich dazu die Komplette Textdatei auslesen und dann im String vergleichen wo dieses Wort drin vorkommt oder gibt es da schon verfügbare Funktionen die ich noch nicht kenne?
Ich hoffe, dass ihr versteht was ich meine.
Gruß Dieda
-
Ich fürchte, du mußt tatsächlich die gesamte Textdatei lesen und selber die relevanten Teile herausfiltern.
-
Für den Fall, dass du dir das Format der Textdatei (genauer: Der Daten) selbst ausdenken kannst, nähme ich an Deiner Stelle eine einfache spaltenweise Aufteilung:
+---------------+-------------------------------+ |Produktnummer |Beschreibung | +---------------+-------------------------------+ | 1100 | Buecherregal | | 1105 | Buecherregal (gross) | | 1200 | Wandschrank Smoerebroel | | ... | ... | +---------------+-------------------------------+Diese Datei nennst du dann "produktschluessel.txt" oder irgend etwas passendes.
Der Inhalt dieser Datei sähe dann wie folgt aus:
1100 Buecherregal 1105 Buecherregal (gross) 1200 Wandschrank Smoerebroel ... ...So müsstest du lediglich die Produktnummer auslesen und anschließend den Rest der Zeile für die Bezeichnung.
Wenn du deklarative Bezeichner benötigts, dann könntest du auf XML[1] setzen (da gibts fertige Bibliotheken, wenn auch nicht gerade für einen Neuling geeignet .. ich steige da auch noch nicht durch). Alternativ bietet sich auch eine einfache Datenbank an (sqlite[2] ist eine feine Sache, wenn nur ein Benutzer darauf zugreifen muss).
Grüße... Heiko
[1]: http://de.wikipedia.org/wiki/Extensible_Markup_Language
[2]: http://www.sqlite.org/
-
Wenn er sich das Dateiformat aussuchen darf, wäre eine Ini-Datei von Vorteil

[Produkte] 1100=Buecherregal 1100101=Vergaserinnenbeleuchtung 1337=KolbenrückholfederMit GetPrivateProfilestring kann man das dann gut auslesen.
-
Dieda schrieb:
Produkt-Nr = "1100";Beschreibung = "Bücherregal"
Wie kann ich nun in C++ diese Datei auslesen und z.B. nur den Wert der Beschreibung, also den in den Hochkomatas auslesen und in einer Variable speichern.
Hallo Dieda,
ja das ist möglich ohne die Datei erst ganz in den Speicher zu laden. Folgende Variante geht davon aus, dass der Schlüssel - d.h. das was vor dem '=' steht - ein Wort ist, also nicht durch ein Leerzeichen unterbrochen ist und dass zwischen dem Schlüssel und dem '=' immer mindestens ein Leer- oder Tabulatorzeichen steht (white space).
#include <iostream> #include <fstream> #include <string> int main() { using namespace std; ifstream in("datei.txt"); char c; for( string key, value ; in >> key >> c && c == '=' && in >> c && c == '"' && getline( in, value, '"' ); ) { if( key == "Beschreibung" ) { // mache was mit 'value' cout << key << " = " << value << endl; } if( in >> c && c != ';' ) in.setstate( ios_base::failbit ); } return 0; }.. falls vor dem '=' nicht immer ein white space vorhanden ist, so frage noch mal nach.
Gruß
Werner