Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Suchfunktion in C++

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
13.05.2007, 23:44 Uhr
snboy2007



Hallo. Brauche Hilfe. Also ich gehe noch zur Schule und ich habe in Informatik in C++ eine kleine Aufgabe bekommen. Ich soll folgendes machen:
Es ist eine Datei angelegt. In der Datei(ganz normale "*.txt" stehen mehrere Namen und zu den Namen noch die Eingenschaften von diesen Namen. Ich soll eine Konsoleanwendung schreiben, die folgendes macht: Ich tippe einen Namen, der in der Datei enthalten ist und mir soll ausgegeben werden, die Eingenschaften dieses Namens. Es sind aber viele Namen in der Datei, von daher wäre alle Namen in den Quelcode zu programmieren nicht so gut.
Kann mir jemand helfen so einen Code zu schreiben, also mit dem ich so eine Suchfunktion und Ausgabefunktion hinbekomme? Sitze schon 8Tag daran und komme nicht weiter und muss bald abgeben und ich strehe in Informatik kurz vor einem Ausfalls
Also bitte bitte hilft mir!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.05.2007, 00:18 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


was ist denn dein genaues problem bzw poste doch mal was du bisher hast...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
14.05.2007, 00:36 Uhr
~snboy2007
Gast


Das ist doch das ganze Problem. Ich habe bis jetzt nur die Eingabe aufforderung.
int main()
{
string eingabe;
cout<<"Bitte geben Sie einen Namen ein\n";
cin>>eingabe
fstream textdatei;
textdatei.open("Cname.txt");

Und weiter fählt mir gar nichts ein. Jetzt, nach der Eingabe, sollte die Datei dursucht werden, ob es so einen Namen gibt, wie der in der Eingabe. Falls es diesen Namen gibt, soll dieser Name ausgegeben werden und alles was zu diesem namen in der textdatei enthalten ist.
Also beispiel ich tippe ein: Berlin
In der Textdatei steht jetzt: Berlin;Hauptstadt;Bundesland;usw;
Und das soll ausgegeben werden: "Berlin, Hauptstadt. Bundesland, usw"
oder zumindest genauso wie in der Textdatei steht und die eingabe soll vom neuen beginnen. Das heißt, die Textdatei muss dursucht werden und das richtige gefunden werden. Falls die Eingabe falsch ist und in der Textdatei nichts steht soll die Eingabe wiederholt werde. I
Und ich bin die absolute Null in C++ und kriege soetwas ohen Hilfe nicht hin.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.05.2007, 12:22 Uhr
~snboy2007
Gast


HAAAALLLOOO???? Bitte lasst mich hier nicht im Stich. Jemand kennt doch bestimmt eine Lösung bzw. kann mir weiter helfen.
BITTE
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.05.2007, 12:30 Uhr
CppProgrammer



So ungefähr kann das Ganze aussehen. Der Rest ist jetzt dein Job.

C++:
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main(int argc, char* argv[])
{
    string strFile, strFind, strLine;
    cout << "File:\t" << flush;
    cin >> strFile;

    for(;;){
        cout << "\nFind:\t" << flush;
        cin >> strFind;

        fstream fs; fs.open(strFile.c_str());
        while(getline(fs, strLine)){
            if(strLine.find(strFind) != -1)
                cout << strLine << endl;
        }
    }
    
    return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
14.05.2007, 13:20 Uhr
~snboy2007
Gast


WOW. Echt vielen Dank. Alles funktioniert super. Wirklich danke. Eine Frage habe ich aber noch
Ich muss noch die Dokumentation für die Aufgabe machen und darum würde ich vier Sachen noch gerne wissen:
1. Was bedeutet: flush
2. Was bedeutet dieser Befehl: c_str()
3. Was bedeutet: ;;
4. Wofür ist dieser Befehl: != -1

Ich bin dir wirklich dankbar für deine Hilfe.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
14.05.2007, 13:43 Uhr
CppProgrammer



1.) Der Flush-Manipulator sorgt einfach dafür, dass der Buffer geflushed wird bevor irgendwas geändert wird wie beispielsweise ein "\n" angehängt.
2.) Die string-Memberfunktion c_str() returned dir eine null-terminierte Zeichenkette als Pointer auf ein Array (const char*).
3.) Naja, der Syntax von der for-Schleife ist eben so, dass in der Klammer drei Teile sein müssen. for(int i=0; i < 10; ++i) wäre beispielsweise so eine Schleife die bis 10 raufzählt. Da du aber praktisch eine Endlosschleife willst, machst eben for(;; ) draus.
4.) Die string-Memberfunktion find() returned dir -1 wenn der gesuchte string nicht gefunden werden konnte, anderenfalls die Position des ersten Zeichens des gesuchten strings im string-Objekt, also mindenstens 0 wenns gleich ganz am Anfang steht.

Dieser Post wurde am 14.05.2007 um 13:48 Uhr von CppProgrammer editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: