Ignore: manipulator that ignores N lines : overload ostream istream operator « Operator Overloading « C++ Tutorial






/* The following code example is taken from the book
 * "The C++ Standard Library - A Tutorial and Reference"
 * by Nicolai M. Josuttis, Addison-Wesley, 1999
 *
 * (C) Copyright Nicolai M. Josuttis 1999.
 * Permission to copy, use, modify, sell and distribute this software
 * is granted provided this copyright notice appears in all copies.
 * This software is provided "as is" without express or implied
 * warranty, and with no claim as to its suitability for any purpose.
 */
#include <iostream>
#include <limits>

// Ignore: manipulator that ignores N lines
class Ignore {
  public:
    int num;
    Ignore(int n) : num(n) {
    }
};

// convenience function
Ignore ignore(int n)
{
    return Ignore(n);
}

std::istream& operator >> (std::istream& strm, const Ignore& manip)
{
    for (int i=0; i<manip.num; ++i) {
        strm.ignore(std::numeric_limits<int>::max(),'\n');
    }
    return strm;
}


int main()
{
    char c;
    std::cout << "ignore two lines and print frist character following them\n";

    std::cin >> ignore(2) >> c;
    std::cout << "c: " << c << std::endl;
}
ignore two lines and print frist character following them
a
v
a
c: a








10.15.overload ostream istream operator
10.15.1.Class level ostream operator and istream operator
10.15.2.istream operator with data check
10.15.3.Class ostream operator
10.15.4.ostream and istream operator for a class
10.15.5.Complex logic in ostream operator
10.15.6.friend ostream operator for private fields
10.15.7.Overload ostream and istream operator
10.15.8.Ignore: manipulator that ignores N lines
10.15.9.Overloading >>: To demonstrate a custom inserter, one will be created for objects of type phonebook, shown here.
10.15.10.Overload << (inserter)