prüfen, ob ein Char in einem Char-Array vorhanden ist



  • Hallo zusammen,

    ich suche eine elegante Möglichkeit zu prüfen, ob der Wert einer Char-Variable in einem Char-Array enthalten ist.
    Genau genommen ist das Ziel, ein weiteres Char-Arry zu durchlaufen, und für jedes Element dieses Arrays zu prüfen ob es zu einer von mir definierten Gruppe gehört

    Ein kurzes Beispiel:
    Ich habe ein Gruppe definiert: Char-Array mit Vokalen
    Nun möchte missen, ob eine best. Char-Variable dazu passt oder nicht.

    In einem Codebeispiel habe ich so etwas gesehen:

    char[] value0Chars = new[] { 'A', 'E', 'I', 'J', 'O', 'U', 'Y', 'Ä', 'Ö', 'Ü' };
            ...   
    if (value0Chars.Contains(currentChar)) 
     {
            ...
     }
    

    Aber ich glaube das Codebeispiel ist C#, und das hilft mir nicht.
    (value0Chars.Contains(currentChar)) erzeugt bei mir einen Syntaxfehler:
    "value0Chars[7] Error: Expression must have Class Type"
    Kennt jemand bei C++ eine ähnlich elegante Möglichkeit, oder muss ich eine Schleife programmieren um value0Chars zu durchlaufen und jedes Element zu prüfen?

    MfG

    Andreas



  • hier findest du eventuell eine Funktion:

    http://www.cplusplus.com/reference/clibrary/cstring/



  • Du musst das mit einer Schleife lösen.

    Alternativ könntest du natürlich auch sowas machen:

    std::map<char, bool> m;
    
    	m.insert(std::make_pair('a', true));
    	m.insert(std::make_pair('e', true));
    	m.insert(std::make_pair('i', true));
    	m.insert(std::make_pair('o', true));
    	m.insert(std::make_pair('u', true));
    
    	if (m.find('a') != m.end())
    	{
    		std::cout << "Vorhanden!" << std::endl;
    	}
    

    Ist vielleicht auch etwas mit Kanonen auf Spatzen geschossen, aber zumindest ist das so möglich.



  • std::tr1::array<char, 10> value0Chars = { 'A', 'E', 'I', 'J', 'O', 'U', 'Y', 'Ä', 'Ö', 'Ü' };
    if (std::find(value0Chars.begin(), value0Chars.end(), curChar) != value0Chars.end())
    // treffer
    
    std::vector value0Chars;
    // ...
    std::sort(value0Chars.begin(), value0Chars.end());
    if (std::binary_search(value0Chars.begin(), value0Chars.end(), curChar)
    // treffer
    
    std::string value0Chars = "AEIJOUY";
    if (value0Chars.find(curChar) != std::string::npos)
    // treffer
    


  • missing template arguments before `value0Chars' at

    std::vector value0Chars;
    


  • 3x warning: multi-character character constant
    3x warning: overflow in implicit constant conversion
    at 1x

    std::tr1::array<char, 10> value0Chars = { 'A', 'E', 'I', 'J', 'O', 'U', 'Y', 'Ä', 'Ö', 'Ü' };
    

    Fix:

    std::tr1::array<wchar_t, 10> value0Chars = { 'A', 'E', 'I', 'J', 'O', 'U', 'Y', L'Ä', L'Ö', L'Ü' };
    

Anmelden zum Antworten