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 {
    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) {
    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
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)