strings vergleichen?



  • hi,

    ich deklariere meinen String so:

    std::string DateiText(static_cast<char*>(p_text), textSize);
    

    . Nun will ich den String auf "flop: 3" überprüfen lassen, aber irgendwie funktioniert das nicht (ich hab eine Messagebox und eine If-Abfrage um zu überprüfen ob der Text, also "flop: 3", im String vorkommt).

    Hier mal die Sachen, die ich schon versucht habe:
    1.

    if(strcmp(DateiString, "flop: 3"))...
    
    if(DateiString == "flop: 3")...
    
    if(DateiString.find("flop: 3)...
    

    Vielen Dank schon mal
    P. S.: Der String ist gefüllt, das hab ich schon geprüft



  • Also:

    if (DateiString.find("flop: 3") != string::npos ) {
    //habs gefunden
    }
    

    Findet es, wenn es genau so im string vorkommt. Ein Vergleich mit == ist nur wahr, wenn der String genau "flop: 3" ist (nicht mehr und nicht weniger).

    In welcher Hinsicht "funktionieren" deine Varianten nicht?
    Was genau willst du nun prüfen?


  • Administrator

    #include <string>
    #include <iostream>
    
    int main()
    {
      std::string text = "Hello!";
    
      if(text == "Hello!")
      {
        std::cout << "true" << std::endl;
      }
      else
      {
        std::cout << "false" << std::endl;
      }
    
      return 0;
    }
    

    Gibt "true" aus. Was heisst also "funktioniert nicht"? Könnte es sein, dass dein Textpuffer eine abschliessende 0 hat und textSize diese 0 dazuzählt?

    Grüssli



  • habs geschafft, danke!


Anmelden zum Antworten