Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- class alternating_case
- {
- public:
- alternating_case();
- alternating_case(alternating_case const& f);
- alternating_case& operator =(alternating_case const& f);
- char operator ()(char c) const;
- void reset();
- private:
- enum STATE { UPPER, LOWER };
- mutable STATE state_;
- };
- alternating_case::alternating_case()
- : state_(UPPER)
- {
- }
- alternating_case::alternating_case(alternating_case const& f)
- : state_(f.state_)
- {
- }
- alternating_case& alternating_case::operator =(alternating_case const& f)
- {
- state_ = f.state_;
- return *this;
- }
- char alternating_case::operator ()(char c) const
- {
- if(state_ == UPPER)
- {
- state_ = LOWER;
- return std::toupper(c);
- }
- else if(state_ == LOWER)
- {
- state_ = UPPER;
- return std::tolower(c);
- }
- }
- void alternating_case::reset()
- {
- state_ = UPPER;
- }
- int main()
- {
- using namespace std;
- string line;
- while(getline(cin, line))
- {
- transform(line.begin(), line.end(), line.end(), alternating_case());
- cout << line << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement