CStrings vergleichen



  • Hallo,

    ich will prüfen, ob diverse CStrings in anderen CStrings vorkommen:
    Ich habe ca. 10 Suchbegriffe, welche ich Fest im Programm definieren will.
    Dazu brauche ich irgend ein CString Array???
    Andere CStrings aus einem Struct sollen nun druchsucht werden, ob diese 10 Begriffe darin vorkommen.

    Ich stelle es mir so vor:

    Solange Elemente im Such-String-Array vorhanden sind{
        Wenn mein-Xter-SuchString in meinstruct[i].meinCString vorkommt{
            ...
        }
    }
    

    Ich hab nur noch nicht rausgefunden, wie:
    1. Ich ein Array aus CStrings anlege
    2. Ich einen CString in einem andern CString finde.

    Danke im voraus.

    mfg
    trequ



  • Hallo,

    meinst du sowas?

    CString arr[10]={string1,string2,string3,string4,string5,...};
    for (int i=0;i<10;i++)
    {
        if (arr[i]=="suche")
       {
          //mach was
       }
    }
    

    MFG TaccoGo



  • Hallo,

    fast, aber nicht ganz:

    CString arr[]; // Anzahl unbekannt
    arr[0] = "Hallo";
    arr[1] = "Test";
    arr[...] = ...;
    
    Wiederhole für jedes Element, welches in arr[] vorkommt{
        Wiederhole für jedes Element, welches in meinemStruct vorkommt{
            Wenn meinStruct[j].MeinString in arr[i] vorhanden ist{
                //Mach Was
            }
        }
    }
    

    Ich will nicht einfach nur vergleichen. Ich suche einen Teil:
    z.B.

    CString test1 = "Hallo, dies ist ein Test"
    CString test2 = "dies"
    Suche test2 in test1 -> TRUE
    
    CString test1 = "Hallo, dies ist ein anderer Test"
    CString test2 = "Hans Dampf"
    Suche test2 in test1 -> FALSE
    

    Weiterhin habe ich mit dem Arrays ein Problem:
    Das ganze ist dafür bestimmt, Laufwerke zu suchen.
    Ich kriege aus einer Funktion z.B. :
    "USB 2.0 Cardreader CF-Device ABC",
    "USB 2.0 Cardreader SM-Device ABC",
    "..."
    Das steht bei mir im Struct (drive[i].drivehardware)
    wobei i für A:\ = 0, B:\ = 1, C:\ = 2 ... etc ist.

    Jetzt will ich es jetzt einem Kartenleser zuordnen:
    Kartenleser Modell ABC Suchbegriff [0] = "CF-Device ABC"
    Kartenleser Modell ABC Suchbegriff [1] = "SM-Device ABC"
    Kartenleser Modell XYZ Suchbegriff [0] = "CF-Device XYZ"
    Kartenleser Modell XYZ Suchbegriff [1] = "SM-Device XYZ"

    Ich hoffe, ihr hab das Problem verstanden, ich weiß nicht so recht, wie ich das noch erklären soll.

    mfg
    trequ



  • CString::Find und CStringArray solltest du dir anschauen!



  • uh lang ist's her
    CString bietet doch einige suchfunktionen an. Gibts da keine entsprechende?

    Wenn alles nichts hilft, dann "auf die harte tour", oder fuer die die in einer sprache arbeiten wo es div. lösungen nicht schon gibt

    pseudo code
    
    string = "hallo du, na alles fit im schritt?"
    suche = "all" // oder fit
    
    1. schleife ( i = 0 bis string.getlenght ) und abbruchbedingung noch nicht
    
    2. von suche ersten charakter nehmen "all" also char = a
    suche ist char = momentan ites element
    Wenn ja dann
    ist i-tes + 1 auch 2tes element von char ( also "l" )
    wenn ja
    // weitermachen, bis letzes element auch übereinstimmt
    //abbruchbedingung setzen auf TRUE z.b.
    
    wenn nein einmal vorkommt dann i-tes + 1 vergleichen lassen wieder mit char dem ersten also "a"
    

    ===

    vergleicht also "hallo du, na alles fit im schritt?" und "all"
    =n == nein =j == ja

    h =n
    a =j // sehr gut erstes gefunden
    l = j // hehe
    l = j // war ja letztes schon hehe, gotcha
    schluss
    vergleicht nur die exakte zeichenkette, das all in alles auch vorkommt bleibt unberücksichtigt. wenn man exaktes wort sucht, muss man die leerzeichen beachten

    aber wie gesagt. mach mal

    CString test;
    test.  // jetzt muesste er dir ja die ganzen funktionen anbieten
    
    oder mach mal
    
    CString  // auf CString drauf und F1 drücken
    

    wer suchtet der findet 😉


Anmelden zum Antworten