txt dateien durchsuchen,sortieren,filtern geht das auch ohne std::getline,std::set,std::vector????
-
hallo leute
ich bräuchte mal wieder eure hilfe
also mein problem liegt darin das ich mein programm so wie ich es geplant habe nicht funktioniert

jetzt habe ich mal eine wichtige frage kann man daten welche zeilenweise in arrays eingelesen wurden trotzdem suchen,sortieren,filtern und dann ausgeben ohne std::getline,std::set,std::vector????
ich hoffe ihr könnt mir helfen

danke im voraus
_sweetheart_
-
Die Standardalgorithmen funktionieren auch auf Arrays..
-
drakon schrieb:
Die Standardalgorithmen funktionieren auch auf Arrays..
aber was heisst das genau was muss ich genau machen damit das funktioniert???
-
sweetheart schrieb:
aber was heisst das genau was muss ich genau machen damit das funktioniert???
#include <algorithm> int main() { int nummern[] = {5,3,1,2,3}; std::sort(nummern, nummern+5); }cu André
-
also mein problem ist jetzt das ich std::getline,std::set,std::vector nicht verstehe ok mit std::getline klappt so gerade noch aber ich komme mit std::set und std::vector gar nicht klar ich weis nicht wie ich die in mein programm einbauen soll und vorallem nicht welche variablen ich dort eintragen muss
hier der code damit ihr mir helfen könnt:
[code]# include <iostream> # include <stdio.h> # include <stdlib.h> # include <assert.h> # include <time.h> # include <stdio.h> # include <string> # include <algorithm> # include <fstream> # include <conio.h> #define LAENGE 100 //länger der einzelnen Zeilen #define ANZAHL 100 //Anzahl der Zeilen int main (void) { cout<<"\nWILLKOMMEN!!\n\nHier koennt Ihr Net Send Nachrichten verschicken!!!\n\nBitte Enter druecken!!\n\n\n"; getchar(); FILE *datei; char line[ANZAHL][LAENGE]; int i ; datei = fopen ("abf_UserExport.txt", "r"); if (datei != NULL) { for(i = 0; i < ANZAHL;i++) { //fseek(datei, i ,SEEK_SET); fgets(line[i],LAENGE,datei); //zeilen weise lesen mit fgets... printf ("%i) %s\n",i ,line[i]); } fclose (datei); } getch(); }[/code]dank euch im voraus
_sweetheart_
-
also ich muss jetzt keine zahlen sortieren,sondern wörter nach dem alphabet
und ich will in meiner ausgabe alle gruppen nur einmal ausgeben also wenn die txt datei jetzt so aussieht
client0;client
client1;client
client2;client
client3;client
client4;client
client5;client
client6;client
server0;server
server1;server
server2;server
server3;server
server4;server
server5;server
server6;serverwill ich das das programm mir das so ausgibt
- client
- server
- ...
- ...
-
sweetheart schrieb:
also mein problem ist jetzt das ich std::getline,std::set,std::vector nicht verstehe ok mit std::getline klappt so gerade noch aber ich komme mit std::set und std::vector gar nicht klar ich weis nicht wie ich die in mein programm einbauen soll und vorallem nicht welche variablen ich dort eintragen muss
Dann schau dir die Beispiele an und versuch es zu verstehen. Dann benutz mal google und such dir ein paar weitere Beispiele. std::vector ist eigentlich nichts anderes, als eine bessere Alternative zu den Arrays. Du kannst sie beliebig erweitern und der Zugriff ist genau gleich einfach, wie bei Arrays..
-
ich habe gegoogelt aber ich versteh es trotzdem nicht
mit dem googeln da kam ich auch alleine drauf nur ich schnall nicht was die mir damit sagen wollen
-
drakon schrieb:
Dann schau dir die Beispiele an...
In seinen Fall sollte er sich erstmal C++ anschauen, den mit Ausnahme des cout habe ich gerade auf die schnelle nur C in seinen Code gesehen.
-
sweetheart schrieb:
ich habe gegoogelt aber ich versteh es trotzdem nicht
Lerne erst einmal die C++ Grundlagen, das was du da machts ist nahezu reines C, und hat mit C++ kaum etwas zu tun. Nimm dir z.B. "Thinking in C++" oder den C++ Primer vor, ersteres bekommt man auch legal kostenlos im Internet.
cu André
-
sweetheart schrieb:
ich habe gegoogelt aber ich versteh es trotzdem nicht
mit dem googeln da kam ich auch alleine drauf nur ich schnall nicht was die mir damit sagen wollen
Kann ich mir nicht vorstellen. Wenn Du gegoogelt hättest, wäre Dir aufgefallen, dass ein std::vector sich genauso benutzen lässt, wie ein C-Array.
-
sweetheart schrieb:
jetzt habe ich mal eine wichtige frage kann man daten welche zeilenweise in arrays eingelesen wurden trotzdem suchen,sortieren,filtern und dann ausgeben ohne std::getline,std::set,std::vector????
Hallo _sweetheart_,
der Trick bei C++ besteht darin, dass Du gar nicht 'suchen,sortieren,filtern' brauchst. Wenn Du es ohne Hilfe des C++-Standard tun willst, so bist Du hier falsch. Gehen tut es sicher, aber mit wesentlich erhöhtem Aufwand.
Wenn Deine Datei so aussieht wie angegeben und Du immer das Wort, welches unmittelbar hinter dem ';' steht, einlesen willst, so solltest Du das einfach tun wie schon im zweitem Listing dieses Beitrags beschrieben. Möchtest Du jede Gruppe nur genau einmal abspeichern, so bietet sich ein set<> an. Ein set<> ist ein Container, in dem jedes Element nur genau einmal drin vorkommt. Um ein Element hinzuzufügen, ruft man insert auf, ist das Element bereits im set<> enthalten, so wird kein weiteres hinzugefügt.
Hier ist ein Entwurf, der in etwa genau das tut:
#include <fstream> #include <iostream> #include <ostream> #include <string> #include <set> int main() { using namespace std; set< string > gruppen; // eine Menge von Gruppen - Typ std::string // -- Einlesen ifstream datei( "abf_UserExport.txt" ); // (Text-)Datei zum Einlesen öffnen for( string gruppe; datei.ignore( 999, ';' ) >> gruppe; ) // ignoriere alles bis ';' und lese das Wort dahinter gruppen.insert( gruppe ); // Gruppe speichern, ist die Gruppe schon enthalten, so wird keine weitere hinzugefügt. // Die for-Schleife bricht ab, falls beim Lesen ein Fehler auftritt; also spätestens beim Dateiende. // -- Ausgeben int idx = 0; for( set< string >::iterator i = gruppen.begin(); i != gruppen.end(); ++i, ++idx ) cout << idx << ".) " << *i << endl; return 0; }Die Ausgabe ist bei der von Dir angegebenen Datei:
0.) client 1.) serverWenn man erstmal ein wenig damit umgehen kann, so ist das sehr viel einfacher, als sich mit char[] und FILE herumzuschlagen.
sweetheart schrieb:
FILE *datei; char line[ANZAHL][LAENGE]; datei = fopen ("abf_UserExport.txt", "r"); if (datei != NULL) {Wenn Du so machen willst, so solltest Du im ANSI-C-Forum um Hilfe bitten. C++ ist das nicht.
:xmas2: Werner