Advertisement
Guest User

Untitled

a guest
Jul 28th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.10 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3.  
  4. class alternating_case
  5. {
  6.   public:
  7.     alternating_case();
  8.     alternating_case(alternating_case const& f);
  9.  
  10.     alternating_case& operator =(alternating_case const& f);
  11.  
  12.     char operator ()(char c) const;
  13.  
  14.     void reset();
  15.  
  16.   private:
  17.     enum STATE { UPPER, LOWER };
  18.     mutable STATE state_;
  19. };
  20.  
  21. alternating_case::alternating_case()
  22.   : state_(UPPER)
  23. {
  24. }
  25.  
  26. alternating_case::alternating_case(alternating_case const& f)
  27.   : state_(f.state_)
  28. {
  29. }
  30.  
  31. alternating_case& alternating_case::operator =(alternating_case const& f)
  32. {
  33.   state_ = f.state_;
  34.   return *this;
  35. }
  36.  
  37. char alternating_case::operator ()(char c) const
  38. {
  39.   if(state_ == UPPER)
  40.   {
  41.     state_ = LOWER;
  42.     return std::toupper(c);
  43.   }
  44.   else if(state_ == LOWER)
  45.   {
  46.     state_ = UPPER;
  47.     return std::tolower(c);
  48.   }
  49. }
  50.  
  51. void alternating_case::reset()
  52. {
  53.   state_ = UPPER;
  54. }
  55.  
  56. int main()
  57. {
  58.   using namespace std;
  59.   string line;
  60.   while(getline(cin, line))
  61.   {
  62.     transform(line.begin(), line.end(), line.end(), alternating_case());
  63.     cout << line << endl;
  64.   }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement