006
02.06.2003, 21:21 Uhr
virtual
Sexiest Bit alive (Operator)
|
Natürlich bietet die STL nicht exakt die Lösung, die Du brauchst, weil Dein Problem ja recht speziell ist. Aber sie stellt Dir komfortable Algorithmen zur Verfügung, mit deren Hilfe man sowas machen kann. Man sieht, daß man mit nichten darauf angewiesen ist, explizit eine for-Schleife zu programmieren. Macht man den Operator recorder::operator() inline, so wird man auch gegenüber einer herkömmlichen for Schleife aus C keine Performanceverluste haben.
C++: |
#include <iostream> #include <string> #include <algorithm> #include <cctype>
struct recoder { char operator () (char c) { if (std::isspace(c)) return '_'; if (std::ispunct(c)) return '-'; return c; } };
int main() { std::string line; std::getline(std::cin, line);
std::transform(line.begin(), line.end(), line.begin(), recoder());
std::cout<<line<<std::endl; }
|
-- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |