isspace()



  • hallo...

    warum funktioniert folgends programm nicht wie gewünscht?

    #include <iostream>
    #include <cctype>
    
    unsigned int wordcount(const std::string& s)
        unsigned int n = 0;
        std::string::iterator b = s.begin();
        std::string::iterator e = s.end();
        for (; b != e; b++) {
            if (std::isspace(*b))
                n++;
        }
        return n;
    }
    
    int main() {
        std::string s;
        std::cout << "Text eingeben:";
        std::cin >> s;
        std::cout << std::endl << wordcount(s);
    
        return 0;
    }
    

    vielen dank für eure hilfe!



  • warum funktioniert folgends programm nicht wie gewünscht?

    ka, was funktioniert denn nicht? Sorry, aber ich hab keine lust zu raten, was dein programm machen soll, also werd präziser



  • entschuldige...
    also das programm soll mit hilfe der iswhitespace() funktion die anzahl woerter in einem string bestimmen..
    in dieser test-version wird der string über cin eingelesen,
    an die funktion wordcount übergeben.

    ein iterator geht über den string und zählt die anzahl whitespces
    (diese werden in der variable n aufsummiert, und diese variable
    wird anschliessend an main zurückgegeben und ausgegeben.)

    das prgoramm funktioniert insofern nicht, dass immer 0 ausgegenben wird.
    das problem schein in dieser zeile zu liegen:

    if (std::isspace(*b))
    

    ich hoffe nun ist das ganze etwas klarer.

    danke



  • std::cin >> s;
    

    darin liegts, cin liest nur bis zum ersten " ", benutze getline 😉


Anmelden zum Antworten