Variable mit mehreren Werten vergleichen



  • Hallo,

    ich schreibe grade ein Programm mit dem man Videos abspielen kann.
    Bevor ich ein Video öffne kontrolliere ich, ob ich das überhaupt abspielen kann.

    Da ich aber viele Videos abspielen kann und auch noch diverse Grafikformate hinzukommen, suche ich eine Art Kurznotation von folgender Zeile:

    if (m_mediapath.GetExt() == "mov" || m_mediapath.GetExt() == "mpg" || m_mediapath.GetExt() == "mpeg") 
    { 
        .. 
    }
    

    Ich könnte natürlich eine Liste durch eine Schleife laufen lassen, ich bin mir aber irgendwie sicher schon mal einen Operator gesehen zu haben mit dem man abfragen kann ob m_mediapath.GetExt() == "mpeg" oder "mov" oder "avi" usw. ist

    Danke im Voraus



  • Muskelkatermann schrieb:

    Ich könnte natürlich eine Liste durch eine Schleife laufen lassen, ich bin mir aber irgendwie sicher schon mal einen Operator gesehen zu haben mit dem man abfragen kann ob m_mediapath.GetExt() == "mpeg" oder "mov" oder "avi" usw. ist

    Nee, da hast du dich sicherlich verguckt. Eine logische Verknüpfung, wie in deinem Beispiel, ist schon richtig.



  • Nur könnte es aus Performancegründen sinnvoll sein, das Ergebnis des Methodenaufrufs lokal abzuspeichern, anstatt die Methode dreimal aufzurufen...



  • Wenn's wirklich viele sind bietet sich evtl ein std::set. an, allein der Übersichtlichkeit wegen:

    std::set<std::string> codecs;
    codecs.insert("mov");
    codecs.insert("mpg");
    codecs.insert("mpeg");
    
    // ...
    
    if (codecs.find(m_mediapath.GetExt()) != codecs.end()) {
    // ...
    }
    

    UU macht es auch Sinn eine std::map zu nehmen, dann hast du gleich den passenden Decoder zur Hand.


Anmelden zum Antworten