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!