Wort einlesen, einzelne Buchstaben speichern und wieder ausgeben
-
Guten Tag
Ich muss für die Schule ein Programm erstellen, welches eine Datei einliest
(Zeile für Zeile - Bsp: Gruen;Grau;Rot;)
und die einzelnen Wörter bis zum ";" abspeichert sprich hier die einzelnen Farben.
Ich hoffe ihr versteht was ich meine.Ich habe es schon mit memcpy versucht oder mit for-Schlaufen. Aber irgendwie will es einfach nicht funktionieren
Wäre super wenn jemand einen Ansatz hätte!
Gruss und danke
Aza
-
Zeilenweise einlesen mit std::getline
Abspeichern kannst du die Farben zum Beispiel in einem std::vectorstd::string
Die ; findest du z.B. mit der find-Methode von std::string.Hinweis: memcpy ist vollkommen ungeeignet für diese Aufgabe.
-
ok, ich werds mal versuchen, vielen dank
-
Wenn man schon getline benutzt, so kann man hier gleich das Semikolon als Trenn-Zeichen angeben und die Worte ohne nachträgliche Aufbereitung einlesen. Etwa so:
using namespace std; ifstream datei("EinFile.txt"); for( string farbe; getline( datei, farbe, datei.widen(';') ); ) cout << "Gelesen: [" << farbe << "]" << endl;
Gruß
Werner
-
Aza schrieb:
Ich habe es schon mit memcpy versucht oder mit for-Schlaufen. Aber irgendwie will es einfach nicht funktionieren
Wäre super wenn jemand einen Ansatz hätte!
Gruss und danke
Aza
Ansatz mit for-Schleife
#include <fstream> #include <iostream> using namespace std; int main() { ifstream datein("c:\\datei1.txt");// Eingabedatei ofstream dataus("c:\\datei2.txt");// Ausgabedatei for (char c; datein.good();) { datein >> c; if (c == '\n') { dataus << c; continue; } if (c == ';') c = '\n'; dataus << c; } return 0; }
:xmas1:
-
Ich hätte 2 Ansätze zu bieten.
a)
1. Mit getline einlesen
2. Die Positionen der Trennzeichen speichern
3. Die Wörter danach einzeln rausschneiden.
String hat solche Funktionen. Ich hab es zumindest so schon einmal gemacht.b) Mein Favorit
1. Mit getline Zeile einlesen
2. Mit Hilfe von der Funktion isalpha die ";" in " " umwandeln.(Ueber den String iterieren und fuer jedes char checken im String.)if(isalpha(c))return c; else return ' ';
3. Den String in einen istringstream verwandeln.
stringstream s(line);
4. Aus dem stringstream die einzelnen Wörter rausholen. In etwa so:
string str; while(s>>str){...}
5.Die strings in einen Vektor packen.
6.Nächste ZeileMFG
chewbo