Schnellste möglichkeit auszulesen + vergleichen



  • hi leute,
    ich hab da ma ne frage... ^^

    was ist die schnellste möglichkeit sachen zuvergleichen?
    z.b. der user gibt ein "hallo"
    und das programm dursucht eine datei ob da irgentwoe hallo drinne ist (nur pro zeile, also der user gibt hallo ein und das programm guckt ob in so einer tabelle in der erstem spalte ein hallo vorhanden ist:

    hier ließter da nicht
    lukas helmut //zeile 1
    hans foto //zeile 2
    helmut berta333 //zeile 3
    hallo friedskop //zeile 4

    also eine möglich keit von mir wäre es jede zeile in einer array zu speichern und dann das erste wort von jeder mit hallo zu vergleichen
    aber denke ma das wär ne dumme idee

    bitte mit code beispiel ^^

    Mfg Marius

    bitte mit code ^^





  • Wie da von mir gepostet 😉

    #include <algorithm> // std::find
    #include <fstream> // std::ifstream
    #include <iterator> // std::istream_iterator
    #include <string> // std::string
    #include <iostream> // std::cin, std::cout, std::flush
    
    int main()
    {
        std::cout << "Wonach Suchen? " << std::flush;
        std::string value;
        std::cin >> value;
        std::ifstream file_stream("data.txt");
        const std::istream_iterator last(std::istream_iterator<std::string>());
        if (std::find(std::istream_iterator<std::string>(file_stream), last, value) != last) std::cout << "String gefunden!" << std::endl;
    }
    

    sollte doch recht schnell sein 😉



  • (D)Evil schrieb:

    sollte doch recht schnell sein 😉

    aber nicht die schnellste möglichkeit



  • Wie willst du es denn schneller machen?



  • Sehe gerade, daß beim Code von (D)Evil noch ein kleiner Fehler ist (fehlender Template Parameter):

    const std::istream_iterator<std::string> last(std::istream_iterator<std::string>());
    

    Ich selber würde aber einfach den Default-Konstruktor nutzen:

    const std::istream_iterator<std::string> last;
    

    Und dieser Code sucht einfach nur, ob das Wort irgendwo in der Datei vorhanden ist, nicht, ob es nur am Anfang einer Zeile steht.



  • http://en.wikipedia.org/wiki/String_searching_algorithm
    Da sind welche die schneller sein können.



  • @Th: Ehm ja stimmt ^^ Weiß netmehr warum ich das komische Konstrukt gewählt hab ... 😮

    Hmm hatte überlesen, dass es am Dateianfang sein soll ... dann geht das so nicht, das ist klar!


Anmelden zum Antworten