Config-Datei schreiben / auswerten
-
Danke, was muss ich für TStringList includen?
-
Allerdings verwende ich nicht VCL (C++ Builder).
Beim Kompilieren erhalte ich folgenden Fehler:
Fehler: >>TStringList<< wurde in diesem Gültigkeitsbereich nicht definiert
Fehler: >>Liste<< wurde in diesem Gültigkeitsbereich nicht definiert
Fehler: expected type-specifier before >>TStringList<<
Fehler: expected;
before >>TStringList<<#include <iostream> #include <string> using namespace std; int main() { TStringList *Liste = new TStringList; Liste->LoadFromFile("home/x/testlist"); Liste->Stirngs[0] = "xxxxxxxxxxx"; string zeile = Liste->Strings[0]; cout << "zeile 1 = " << zeile << endl; //delete Liste; return 0; }
-
cpp_anfaenger schrieb:
Allerdings verwende ich nicht VCL (C++ Builder).
Dann hast du vermutlich schlechte Karten, wenn du trotzdem die C++ Builder eigenen Klassen benutzen willst. Du könntest stattdessen std::list mit std::strings benutzen. (erstere gibts im header <list>)
-
Geht das Verwalten von Dateien dort ähnlich einfach?
Mit welchen Funktionen ist >>list<< beschrieben?
-
list
ist keinen Funktion, sondern eine Klassen Template. Unter anderem findest du das hier:
-
Danke. Könnt ihr mir bitte Tipps geben wie ich die obige Aufgabe lösen könnte?
-
Die verwendung von Containern und das Lesen und Schreiben von strings in Dateien sollte eigentlich in jedem halbwegs guten Buch und Tutorial behandelt werden.
-
cpp_anfaenger schrieb:
Danke. Könnt ihr mir bitte Tipps geben wie ich die obige Aufgabe lösen könnte?
Schreib doch erstmal ein paar Zeilen in eine Datei rein.
Dann lies die Datei in einen vector, oder eine list ein und du hast so gut wie gewonnen!
-
hast du ein Beispiel dafür?
Das Auslesen ist kein Problem.
Aber wie kann ich eine bestimmte Zeile der Datei beschreiben?
-
cpp_anfaenger schrieb:
hast du ein Beispiel dafür?
Aber wie kann ich eine bestimmte Zeile der Datei beschreiben?Das dürfte in Deinem Fall nur sehr umständlich (wenn überhaupt) möglich sein. Besser (einfacher) ist es, die ganze Datei einzulesen, Deine Änderungen vorzunehmen, und die ganze Datei wieder wegzuschreiben.
-
Das ist leichter ja, aber eine unschöne Lösung, wenn die Datei über mehrere Seiten geht.
Sowas wie TStringList wäre perfekt.
-
cpp_anfaenger schrieb:
Das ist leichter ja, aber eine unschöne Lösung, wenn die Datei über mehrere Seiten geht.
Sowas wie TStringList wäre perfekt.Mit TStringList ist das auch nicht anders, da müsstest du auch die komplette Datei in die Stringliste laden, dort bearbeiten und am Ende wieder abspeichern.
-
cpp_anfaenger schrieb:
hast du ein Beispiel dafür?
Das Auslesen ist kein Problem.
Aber wie kann ich eine bestimmte Zeile der Datei beschreiben?Eine Datei zeilenweise einzulesen und in die einzelnen Zeilen 'reinzugucken' ist ja kein Problem, das weißt du auch.
Du musst dir ein Format ausdenken, wie du deine Zeile bzw. deinen Datensatz aufbauen willst - dementsprechend wird das auch in einzelne Bestandteile zerlegt.
-
nein ich weiß nicht wie man eine Datei zeilenweise beschreibt, wie man alles in eine Zeile schreibt.
Wie liest man zeilenweise ein und aus ?
-
Das zeilenweise schreiben hab ich nun hingekriegt
fstream f f.open("xxx",ios::out); for (i= 1; i < 11; i++ ) { f << "zeile" i+1 << "\n"; } f<<endl; f.close();
Jetzt würd ich nur noch gerne Zeile X aus der Datei auslesen können.
-
Du kannst dazu
std::getline
benutzen und alle Linien einlesen und dann die gewünschte rauspicken.
-
Das habe ich nun versucht.
fstream f; char cstr[256]; char* myarr[4]; for(i=0, i < 4, i++ ) { f.getline(cstr,sizeof(cstr)); myarr[i] = cstr; }
alle myarr[i] ist nun der letzte Wert in myarr[3]
Was muss ich tun dass myarr[i] auch den Wert an Position i hat???
-
Eingabe-File
zeile1 zeile2 zeile3 zeile4
Ausgabe-File
zeile4 zeile4 zeile4 zeile4
-
Ich würde das in etwa so machen:
std::ifstream in ( "file.txt" ); std::string line; std::vector< std::string > lines; while ( std::getline ( in, line ) ) lines.push_back ( line );