bestimmte Zeichenfolgen aus Text suchen und zählen



  • Tach

    arbeite mit Visual Studio.Net 2003 und bräuchte einen Tipp,
    wie er aus einer Datei die Zeichenfolge "HDR" suchen und zählen soll
    wie er die einzelnen Linien durchsucht, hab ich schon

    int count = 0;
    int countHDR = 0;
    
    	QFile file = "C:\\Dokumente und Einstellungen\\in.txt";
            QFile ("in.txt");
            if(file.open(QIODevice::ReadOnly | QIODevice::Text))
    		{
               QTextStream in(&file);
    			while (!in.atEnd())
    			{
    				QString line = in.readLine();
    					count++;
    
    				char buf[3];
    				qint64 lineLength = file.readLine(buf, sizeof(buf));
    				if(line.length char [3] = 'HDR')
    					countHDR++;
    			}
    			ui.anzRecValue->setNum( count );
    			ui.anzHDRValue->setNum( countHDR );
    		}       
    }
    

    Mit dem

    if(line.length char [3] = 'HDR')
    countHDR++;
    

    gibt noch probleme

    Dankeschön



  • Ich werstehe jetzt zwar komischerweise von deinem Visual Code nicht viel und hab mir auch nicht deinen Quelltext angeschaut aber sollte das hier:

    if(line.length char [3] = 'HDR')
    countHDR++;
    

    Nich so sein:

    if(line.length char [3] == "HDR")
    countHDR++;
    

    Also HDR in doppelte Anführungszeichen setzen und zwei Gleichheitszeichen.
    Und was macht das char [3] dadrin ??? 😕 😕



  • Ich kenn nur CString aus VC6 und net QString, aber der wird doch sicher auch ne Methode "Find(...)" haben. Damit kannst du nach der Zeichenfolge suchen lassen ... .



  • werde das heute mal probieren, wenns nicht geht, schreib ich wieder

    danke



  • hab jetzt den ganzen morgen im INET gesucht und nichts gefunden.
    hab X möglichkeiten schon ausprobiert, aber es geht nichts 😞 😞 😞

    hat denn wirklich niemand eine Idee?



  • Hallo,

    QString ist doch von QT. Frag doch mal im GUI-Forum nach.



  • Paladin schrieb:

    hab jetzt den ganzen morgen im INET gesucht und nichts gefunden.

    Habe 2 min im INET gegooglt und folgendes gefunden.

    int QString::find ( const QString & str, int index = 0, bool cs = TRUE ) const 
    This is an overloaded member function, provided for convenience. It behaves essentially like the above function. 
    Finds the first occurrence of the string str, starting at position index. If index is -1, the search starts at the last character, if it is -2, at the next to last character and so on. (See findRev() for searching backwards.) 
    
    If cs is TRUE (the default), the search is case sensitive; otherwise the search is case insensitive. 
    
    Returns the position of str or -1 if str could not be found.
    

    würde es dementsprechend so machen

    if(line.length() &&  line.find(QString("HDR") >= 0 )
                        countHDR++;
    

    Kurt



  • ok danke werds ausprobieren



  • if(line.length() &&  line.find(QString("HDR") >= 0 )
                        countHDR++;
    

    finde ich nicht so gut, wenn in einer Zeile zweimal HDR vorkommt, würde es nur einmal gezählt werden. Also nicht countHDR inkrementieren, sonder die gefunden Anzahl aufaddieren, falls was gefunden wurde!!


Anmelden zum Antworten