Index in Iterator



  • Huhu,
    ich habe die Aufgabe dieses Programm mit Iteratoren zu schreiben.
    Ist das überhaupt möglich? wenn ja wie?

    #include <iostream>
    #include <vector>
    #include <string>
    #include <cctype>
    
    int main()
    {
        std::vector<std::string> svec;
        std::string line;
        while (std::cin >> line ) svec.push_back(line);
        for (std::vector<std::string>::size_type ix(0); ix != svec.size(); ++ix)
        {
            for (std::string::size_type pos(0); pos < svec[ix].length(); ++pos)
                svec[ix][pos] = std::toupper(svec[ix][pos]);
            std::cout << svec[ix] << std::endl;
        }
        system("PAUSE");
        return 0;
    }
    


  • meld dich an, spar dir solche Benutzernamen, bitte 🙄

    Zum Thema: also du hast nichteinmal eine Angabe gegeben .. Aber es ist im prinzip schon möglich, zwar nicht alles, aber das meiste.



  • Ein Neues Thema! schrieb:

    Huhu,
    ich habe die Aufgabe dieses Programm mit Iteratoren zu schreiben.
    Ist das überhaupt möglich? wenn ja wie?

    Da es DEINE Aufgabe ist, solltest DU sie auch erledigen 😉 ...
    rauszufinden, wie das geht, sollte eigentlich kein Problem darstellen.
    wenn du aber in Zukunft vllt. mehr solcher Aufgaben kriegst, solltest du dich vielleicht mit der C++ STandardbibliothek bzw. mit den Containern der Standardbibliothek auseinandersetzen.



  • ich weiß ja nur nicht wie ich mit iteratoren auf den buchstaben von dem string zugreife. So etwa?
    *iter[]?



  • Fast - Iteratoren sind eine Verallgemeinerung von Zeigern, also kannst du sie auch wie Zeiger dereferenzieren über "*iter".



  • #include <iostream>
    #include <vector>
    #include <string>
    #include <cctype>
    
    std::istream& clear_stream(std::istream& in) { in.clear(); in.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); return in; }
    
    int main()
    {
        std::vector<std::string> vec_data;
        std::string str_line;
        while (std::getline(std::cin, str_line) && str_line != "ready") vec_data.push_back(line);
    
        for (std::vector<std::string>::iterator it_vec(vec_data.begin()); it_vec != vec_data.end(); ++it_vec)
        {
            for (std::string::iterator it_str(*it_vec.begin()); it_str != *it_vec.end(); ++it_str) *it_str = std::toupper(*it_str);
            std::cout << *it_vec << std::endl;
        }
    
        clear_stream(std::cin).get();
    }
    

    Wobei du dir mal den Algorithmus std::transform angucken solltest.<algorithm> ist der Header!


Anmelden zum Antworten