aus Text Wort suchen
-
Hallo,
ich habe eine Datei mit mehreren Zeilen. Ich will diese Zeilen einlesen und nach einem bestimmten Wort suchen. Ich habe dies, aber irgendwie funktioniert es nicht genau wie ich will:
#include <iostream> #include <string> #include <cmath> #include <fstream> #include <vector> #include <iterator> #include <algorithm> #include <sstream> #include <istream> #include <cstdlib> #include <windows.h> #include <stdio.h> #include <iomanip> using namespace std; int main () { char *suche; char hallo[]="hallo"; ifstream eingabedatei("test_datei.txt"); string buffer; char *line; while( getline( eingabedatei, buffer ) ){ line==buffer.data(); suche = strncpy (line,hallo,0); cout << suche << endl; } eingabedatei.close(); system("pause"); }
Die test_datei.txt sieht so aus:
keinhallo 3
hallo 5
keinhallo 9Ich würde gerne hallo finden und die Zahl dahinter in einer Variable abspeichern.
Danke
-
rasidrasid schrieb:
Hallo,
ich habe eine Datei mit mehreren Zeilen. Ich will diese Zeilen einlesen und nach einem bestimmten Wort suchen. Ich habe dies, aber irgendwie funktioniert es nicht genau wie ich will:
#include <iostream> #include <string> #include <cmath> #include <fstream> #include <vector> #include <iterator> #include <algorithm> #include <sstream> #include <istream> #include <cstdlib> #include <windows.h> #include <stdio.h> #include <iomanip> using namespace std; int main () { char *suche; char hallo[]="hallo"; ifstream eingabedatei("test_datei.txt"); string buffer; char *line; while( getline( eingabedatei, buffer ) ){ line==buffer.data(); suche = strncpy (line,hallo,0); cout << suche << endl; } eingabedatei.close(); system("pause"); }
Die test_datei.txt sieht so aus:
keinhallo 3
hallo 5
keinhallo 9Ich würde gerne hallo finden und die Zahl dahinter in einer Variable abspeichern.
Danke
Benutz lieber std::string anstatt char * Ist einfacher:
std::ifstream inFile("test_datei.txt"); std::string buf; while (!inFile.eof()) { std::getline(inFile, buf); if (buf.find("hallo") != std::string::npos) { std::cout << "Gefunden. Zeile: " << buf << std::endl } } inFile.close();
Das Ausschneiden der Zahl lässt sich mit
substr
bewerkstelligen
-
Danke für die schnelle Antwort. Könntest Du mir bitte auch den Unterschied erklären
Dank im Voraus
-
zwischen was? zwischen string und char??
lg, freakC++
-
ja bitte.
Wieso einfacherDanke
-
rasidrasid schrieb:
Danke für die schnelle Antwort. Könntest Du mir bitte auch den Unterschied erklären
Dank im Voraus
Na ja, char * ist einfach ein Zeiger auf Array von Zeichen. Es ist einfach nur ein Typ und daher nicht besonders komfortabel. Während std::string eine Klasse ist, die Funktionen zum Suchen innerhalb des Strings bereitstellt, usw. Auch vergrößert sich der std::string automatisch. Brauchst du also plötzlich mehr Zeichen, weil du mehr Text speichern willst, übernimmt die gesamte Arbeit die Klasse.
Hab übrigen das was du willst falsch verstanden. Hier der gesamte Quellcode:
#include <iostream> #include <fstream> #include <string> int main() { std::ifstream inFile("test_datei.txt"); std::string buf; std::string suche; while (!inFile.eof()) { std::getline(inFile, buf); if (buf.find(" ") != std::string::npos) // Leerzeichen vorhanden? { // Position vom Leerzeichen size_t posSpace = buf.find(" "); // Ausschneiden: // Alles vorm Leerzeichen std::string links = buf.substr(0, posSpace); // Alles nach dem Leerzeichen std::string rechts = buf.substr(posSpace + 1); if (links == "hallo") { suche = rechts; } } } inFile.close(); std::cout << "Gefunden: '" << suche << "'" << std::endl; return 0; }
-
Dank Dir