A<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B_Tutorial%2FOperator_Overloading%2Foverload_ostream_istream_operator</id>
		<title>C++ Tutorial/Operator Overloading/overload ostream istream operator - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B_Tutorial%2FOperator_Overloading%2Foverload_ostream_istream_operator"/>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B_Tutorial/Operator_Overloading/overload_ostream_istream_operator&amp;action=history"/>
		<updated>2026-04-17T19:35:13Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.cppe.ru/index.php?title=C%2B%2B_Tutorial/Operator_Overloading/overload_ostream_istream_operator&amp;diff=2843&amp;oldid=prev</id>
		<title> в 14:21, 25 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B_Tutorial/Operator_Overloading/overload_ostream_istream_operator&amp;diff=2843&amp;oldid=prev"/>
				<updated>2010-05-25T14:21:17Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 14:21, 25 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.cppe.ru/index.php?title=C%2B%2B_Tutorial/Operator_Overloading/overload_ostream_istream_operator&amp;diff=2844&amp;oldid=prev</id>
		<title>Admin: 1 версия:&amp;#32;Импорт контента...</title>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B_Tutorial/Operator_Overloading/overload_ostream_istream_operator&amp;diff=2844&amp;oldid=prev"/>
				<updated>2010-05-25T10:30:39Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия: Импорт контента...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Class level ostream operator and istream operator==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include&amp;lt;iostream.h&amp;gt;&lt;br /&gt;
#include&amp;lt;fstream.h&amp;gt;&lt;br /&gt;
class ThreeD&lt;br /&gt;
{&lt;br /&gt;
  int x,y,z;&lt;br /&gt;
public:&lt;br /&gt;
  ThreeD(int i,int j,int k){&lt;br /&gt;
    x=i;&lt;br /&gt;
    y=j;&lt;br /&gt;
    z=k;&lt;br /&gt;
  }&lt;br /&gt;
  friend ostream&amp;amp; operator&amp;lt;&amp;lt;(ostream&amp;amp; stream,ThreeD ob);&lt;br /&gt;
  friend istream&amp;amp; operator&amp;gt;&amp;gt;(istream&amp;amp; stream,ThreeD ob);&lt;br /&gt;
};&lt;br /&gt;
ostream&amp;amp; operator&amp;lt;&amp;lt;(ostream&amp;amp; stream,ThreeD ob)&lt;br /&gt;
{&lt;br /&gt;
  stream&amp;lt;&amp;lt;ob.x&amp;lt;&amp;lt;&amp;quot; &amp;quot;&amp;lt;&amp;lt;ob.y&amp;lt;&amp;lt;&amp;quot; &amp;quot;&amp;lt;&amp;lt;ob.z&amp;lt;&amp;lt;&amp;quot;\n&amp;quot;;&lt;br /&gt;
  return stream;&lt;br /&gt;
}&lt;br /&gt;
istream&amp;amp; operator&amp;gt;&amp;gt;(istream&amp;amp; stream,ThreeD  ob)&lt;br /&gt;
{&lt;br /&gt;
  stream&amp;gt;&amp;gt;ob.x&amp;gt;&amp;gt;ob.y&amp;gt;&amp;gt;ob.z;&lt;br /&gt;
  return stream;&lt;br /&gt;
}&lt;br /&gt;
main()&lt;br /&gt;
{&lt;br /&gt;
  ThreeD o1(1,2,3),o2(4,5,6);&lt;br /&gt;
  ofstream out(&amp;quot;test&amp;quot;);&lt;br /&gt;
  if(!out)&lt;br /&gt;
  {&lt;br /&gt;
    cout&amp;lt;&amp;lt;&amp;quot;Cannot open output file\n&amp;quot;;&lt;br /&gt;
       return 1;&lt;br /&gt;
  }&lt;br /&gt;
  cout&amp;lt;&amp;lt;o1&amp;lt;&amp;lt;o2;&lt;br /&gt;
  out.close();&lt;br /&gt;
  ifstream in(&amp;quot;test&amp;quot;);&lt;br /&gt;
  if(!in)&lt;br /&gt;
  {&lt;br /&gt;
    cout&amp;lt;&amp;lt;&amp;quot;Cannot open input file\n&amp;quot;;&lt;br /&gt;
       return 1;&lt;br /&gt;
  }&lt;br /&gt;
  ThreeD o3(0,0,0),o4(0,0,0);&lt;br /&gt;
  in&amp;gt;&amp;gt;o3&amp;gt;&amp;gt;o4;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;1 2 3&lt;br /&gt;
4 5 6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Class ostream operator==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;cstring&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class MyClass {&lt;br /&gt;
public:&lt;br /&gt;
  char name[80];&lt;br /&gt;
  int areacode;&lt;br /&gt;
  int prefix;&lt;br /&gt;
  int num;&lt;br /&gt;
  MyClass(char *n, int a, int p, int nm)&lt;br /&gt;
  {&lt;br /&gt;
    strcpy(name, n);&lt;br /&gt;
    areacode = a;&lt;br /&gt;
    prefix = p;&lt;br /&gt;
    num = nm;&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
ostream &amp;amp;operator&amp;lt;&amp;lt;(ostream &amp;amp;stream, MyClass o)&lt;br /&gt;
{&lt;br /&gt;
  stream &amp;lt;&amp;lt; o.name &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  stream &amp;lt;&amp;lt; &amp;quot;(&amp;quot; &amp;lt;&amp;lt; o.areacode &amp;lt;&amp;lt; &amp;quot;) &amp;quot;;&lt;br /&gt;
  stream &amp;lt;&amp;lt; o.prefix &amp;lt;&amp;lt; &amp;quot;-&amp;quot; &amp;lt;&amp;lt; o.num &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  return stream; &lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  MyClass a(&amp;quot;T&amp;quot;, 1, 5, 1);&lt;br /&gt;
  MyClass b(&amp;quot;A&amp;quot;, 3, 5, 5);&lt;br /&gt;
  MyClass c(&amp;quot;T&amp;quot;, 2, 5, 9);&lt;br /&gt;
  cout &amp;lt;&amp;lt; a &amp;lt;&amp;lt; b &amp;lt;&amp;lt; c;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;T (1) 5-1&lt;br /&gt;
A (3) 5-5&lt;br /&gt;
T (2) 5-9&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Complex logic in ostream operator==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class Line {&lt;br /&gt;
  int x;&lt;br /&gt;
public:&lt;br /&gt;
  Line(int i) { x=i; }&lt;br /&gt;
  friend ostream &amp;amp;operator&amp;lt;&amp;lt;(ostream &amp;amp;stream, Line o);&lt;br /&gt;
};&lt;br /&gt;
ostream &amp;amp;operator&amp;lt;&amp;lt;(ostream &amp;amp;stream, Line o)&lt;br /&gt;
{&lt;br /&gt;
  register int i, j;&lt;br /&gt;
  for(i=0; i&amp;lt;o.x; i++)&lt;br /&gt;
     stream &amp;lt;&amp;lt; &amp;quot;*&amp;quot;;&lt;br /&gt;
  stream &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  return stream;&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  Line a(14), b(30), c(40);&lt;br /&gt;
  cout &amp;lt;&amp;lt; a &amp;lt;&amp;lt; b &amp;lt;&amp;lt; c;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;**************&lt;br /&gt;
******************************&lt;br /&gt;
****************************************&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==friend ostream operator for private fields==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;cstring&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class MyClass {&lt;br /&gt;
  // now private&lt;br /&gt;
  char name[80];&lt;br /&gt;
  int areacode;&lt;br /&gt;
  int prefix;&lt;br /&gt;
  int num;&lt;br /&gt;
public:&lt;br /&gt;
  MyClass(char *n, int a, int p, int nm)&lt;br /&gt;
  {&lt;br /&gt;
    strcpy(name, n);&lt;br /&gt;
    areacode = a;&lt;br /&gt;
    prefix = p;&lt;br /&gt;
    num = nm;&lt;br /&gt;
  }&lt;br /&gt;
  friend ostream &amp;amp;operator&amp;lt;&amp;lt;(ostream &amp;amp;stream, MyClass o);&lt;br /&gt;
};&lt;br /&gt;
ostream &amp;amp;operator&amp;lt;&amp;lt;(ostream &amp;amp;stream, MyClass o)&lt;br /&gt;
{&lt;br /&gt;
  stream &amp;lt;&amp;lt; o.name &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  stream &amp;lt;&amp;lt; &amp;quot;(&amp;quot; &amp;lt;&amp;lt; o.areacode &amp;lt;&amp;lt; &amp;quot;) &amp;quot;;&lt;br /&gt;
  stream &amp;lt;&amp;lt; o.prefix &amp;lt;&amp;lt; &amp;quot;-&amp;quot; &amp;lt;&amp;lt; o.num &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  return stream;&lt;br /&gt;
}&lt;br /&gt;
int main() {&lt;br /&gt;
  MyClass a(&amp;quot;T&amp;quot;, 1, 5, 1);&lt;br /&gt;
  MyClass b(&amp;quot;A&amp;quot;, 3, 5, 5);&lt;br /&gt;
  MyClass c(&amp;quot;T&amp;quot;, 2, 5, 9);&lt;br /&gt;
  cout &amp;lt;&amp;lt; a &amp;lt;&amp;lt; b &amp;lt;&amp;lt; c;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;T (1) 5-1&lt;br /&gt;
A (3) 5-5&lt;br /&gt;
T (2) 5-9&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ignore: manipulator that ignores N lines==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;/* The following code example is taken from the book&lt;br /&gt;
 * &amp;quot;The C++ Standard Library - A Tutorial and Reference&amp;quot;&lt;br /&gt;
 * by Nicolai M. Josuttis, Addison-Wesley, 1999&lt;br /&gt;
 *&lt;br /&gt;
 * (C) Copyright Nicolai M. Josuttis 1999.&lt;br /&gt;
 * Permission to copy, use, modify, sell and distribute this software&lt;br /&gt;
 * is granted provided this copyright notice appears in all copies.&lt;br /&gt;
 * This software is provided &amp;quot;as is&amp;quot; without express or implied&lt;br /&gt;
 * warranty, and with no claim as to its suitability for any purpose.&lt;br /&gt;
 */&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;limits&amp;gt;&lt;br /&gt;
// Ignore: manipulator that ignores N lines&lt;br /&gt;
class Ignore {&lt;br /&gt;
  public:&lt;br /&gt;
    int num;&lt;br /&gt;
    Ignore(int n) : num(n) {&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
// convenience function&lt;br /&gt;
Ignore ignore(int n)&lt;br /&gt;
{&lt;br /&gt;
    return Ignore(n);&lt;br /&gt;
}&lt;br /&gt;
std::istream&amp;amp; operator &amp;gt;&amp;gt; (std::istream&amp;amp; strm, const Ignore&amp;amp; manip)&lt;br /&gt;
{&lt;br /&gt;
    for (int i=0; i&amp;lt;manip.num; ++i) {&lt;br /&gt;
        strm.ignore(std::numeric_limits&amp;lt;int&amp;gt;::max(),&amp;quot;\n&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    return strm;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    char c;&lt;br /&gt;
    std::cout &amp;lt;&amp;lt; &amp;quot;ignore two lines and print frist character following them\n&amp;quot;;&lt;br /&gt;
    std::cin &amp;gt;&amp;gt; ignore(2) &amp;gt;&amp;gt; c;&lt;br /&gt;
    std::cout &amp;lt;&amp;lt; &amp;quot;c: &amp;quot; &amp;lt;&amp;lt; c &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;ignore two lines and print frist character following them&lt;br /&gt;
a&lt;br /&gt;
v&lt;br /&gt;
a&lt;br /&gt;
c: a&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==istream operator with data check==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include&amp;lt;iostream.h&amp;gt;&lt;br /&gt;
class Time&lt;br /&gt;
{&lt;br /&gt;
  int hour;&lt;br /&gt;
  int minute;&lt;br /&gt;
  int second;&lt;br /&gt;
public:&lt;br /&gt;
  friend ostream&amp;amp; operator&amp;lt;&amp;lt;( ostream &amp;amp;, Time);&lt;br /&gt;
  friend istream&amp;amp; operator&amp;gt;&amp;gt;( istream &amp;amp;,Time &amp;amp;);&lt;br /&gt;
};&lt;br /&gt;
ostream&amp;amp; operator&amp;lt;&amp;lt;( ostream &amp;amp; out, Time t)&lt;br /&gt;
{&lt;br /&gt;
  out&amp;lt;&amp;lt;&amp;quot;\nHere&amp;quot;s the time:\n&amp;quot;;&lt;br /&gt;
  out&amp;lt;&amp;lt;t.hour&amp;lt;&amp;lt;&amp;quot;:&amp;quot;&amp;lt;&amp;lt;t.minute&amp;lt;&amp;lt;&amp;quot;:&amp;quot;&amp;lt;&amp;lt;t.second&amp;lt;&amp;lt;&amp;quot;\n&amp;quot;;&lt;br /&gt;
  return out;&lt;br /&gt;
}&lt;br /&gt;
istream&amp;amp; operator&amp;gt;&amp;gt;( istream &amp;amp; in ,Time &amp;amp; t)&lt;br /&gt;
{&lt;br /&gt;
  cout&amp;lt;&amp;lt;&amp;quot;Please enter the time as follow\n&amp;quot;;&lt;br /&gt;
  do{&lt;br /&gt;
    cout&amp;lt;&amp;lt;&amp;quot;What is the hour(0-23)?&amp;quot;;&lt;br /&gt;
       in&amp;gt;&amp;gt;t.hour;&lt;br /&gt;
       if((t.hour&amp;lt;0)||(t.hour&amp;gt;23))&lt;br /&gt;
       cout&amp;lt;&amp;lt;&amp;quot;You have inpitted a wrong data! Please try again!\n&amp;quot;;&lt;br /&gt;
  }while((t.hour&amp;lt;0)||(t.hour&amp;gt;23));&lt;br /&gt;
  do{&lt;br /&gt;
    cout&amp;lt;&amp;lt;&amp;quot;What is the minute(0-59)?&amp;quot;;&lt;br /&gt;
       in&amp;gt;&amp;gt;t.minute;&lt;br /&gt;
       if((t.minute&amp;lt;0)||(t.minute&amp;gt;59))&lt;br /&gt;
       cout&amp;lt;&amp;lt;&amp;quot;You have inpitted a wrong data! Please try again!\n&amp;quot;;&lt;br /&gt;
  }while((t.minute&amp;lt;0)||(t.minute&amp;gt;59));&lt;br /&gt;
  do{&lt;br /&gt;
    cout&amp;lt;&amp;lt;&amp;quot;What is the second(0-23)?&amp;quot;;&lt;br /&gt;
       in&amp;gt;&amp;gt;t.second;&lt;br /&gt;
       if((t.second&amp;lt;0)||(t.second&amp;gt;59))&lt;br /&gt;
       cout&amp;lt;&amp;lt;&amp;quot;You have inpitted a wrong data! Please try again!\n&amp;quot;;&lt;br /&gt;
  }while((t.second&amp;lt;0)||(t.second&amp;gt;59));&lt;br /&gt;
  return in;&lt;br /&gt;
}&lt;br /&gt;
main()&lt;br /&gt;
{&lt;br /&gt;
  Time now;&lt;br /&gt;
  cin&amp;gt;&amp;gt;now;      &lt;br /&gt;
  cout&amp;lt;&amp;lt;now;     &lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Please enter the time as follow&lt;br /&gt;
What is the hour(0-23)?12&lt;br /&gt;
What is the minute(0-59)?12&lt;br /&gt;
What is the second(0-23)?12&lt;br /&gt;
Here&amp;quot;s the time:&lt;br /&gt;
12:12:12&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ostream and istream operator for a class==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;cstring&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class MyClass {&lt;br /&gt;
  char name[80];&lt;br /&gt;
  int id;&lt;br /&gt;
  int prefix;&lt;br /&gt;
  int value;&lt;br /&gt;
public:&lt;br /&gt;
  MyClass() { };&lt;br /&gt;
  MyClass(char *n, int a, int p, int nm)&lt;br /&gt;
  {&lt;br /&gt;
    strcpy(name, n);&lt;br /&gt;
    id = a;&lt;br /&gt;
    prefix = p;&lt;br /&gt;
    value = nm;&lt;br /&gt;
  }&lt;br /&gt;
  friend ostream &amp;amp;operator&amp;lt;&amp;lt;(ostream &amp;amp;stream, MyClass o);&lt;br /&gt;
  friend istream &amp;amp;operator&amp;gt;&amp;gt;(istream &amp;amp;stream, MyClass &amp;amp;o);&lt;br /&gt;
};&lt;br /&gt;
// Display name and phone valueber.&lt;br /&gt;
ostream &amp;amp;operator&amp;lt;&amp;lt;(ostream &amp;amp;stream, MyClass o)&lt;br /&gt;
{&lt;br /&gt;
  stream &amp;lt;&amp;lt; o.name &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  stream &amp;lt;&amp;lt; &amp;quot;(&amp;quot; &amp;lt;&amp;lt; o.id &amp;lt;&amp;lt; &amp;quot;) &amp;quot;;&lt;br /&gt;
  stream &amp;lt;&amp;lt; o.prefix &amp;lt;&amp;lt; &amp;quot;-&amp;quot; &amp;lt;&amp;lt; o.value &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  return stream; // must return stream&lt;br /&gt;
}&lt;br /&gt;
// Input name and telephone valueber.&lt;br /&gt;
istream &amp;amp;operator&amp;gt;&amp;gt;(istream &amp;amp;stream, MyClass &amp;amp;o)&lt;br /&gt;
{&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Enter name: &amp;quot;;&lt;br /&gt;
  stream &amp;gt;&amp;gt; o.name;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Enter id: &amp;quot;;&lt;br /&gt;
  stream &amp;gt;&amp;gt; o.id;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Enter prefix: &amp;quot;;&lt;br /&gt;
  stream &amp;gt;&amp;gt; o.prefix;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Enter value: &amp;quot;;&lt;br /&gt;
  stream &amp;gt;&amp;gt; o.value;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  return stream;&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  MyClass a;&lt;br /&gt;
  cin &amp;gt;&amp;gt; a;&lt;br /&gt;
  cout &amp;lt;&amp;lt; a;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Enter name: Joe&lt;br /&gt;
Enter id: 123&lt;br /&gt;
Enter prefix: 1&lt;br /&gt;
Enter value: 2&lt;br /&gt;
Joe (123) 1-2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Overloading &amp;gt;&amp;gt;: To demonstrate a custom inserter, one will be created for objects of type phonebook, shown here.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;cstring&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
   &lt;br /&gt;
class phonebook {&lt;br /&gt;
public:&lt;br /&gt;
  char name[80];&lt;br /&gt;
  int areacode;&lt;br /&gt;
  int prefix;&lt;br /&gt;
  int num;&lt;br /&gt;
  phonebook(char *n, int a, int p, int nm)&lt;br /&gt;
  {&lt;br /&gt;
    strcpy(name, n);&lt;br /&gt;
    areacode = a;&lt;br /&gt;
    prefix = p;&lt;br /&gt;
    num = nm;&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
   &lt;br /&gt;
// Display name and phone number.&lt;br /&gt;
ostream &amp;amp;operator&amp;lt;&amp;lt;(ostream &amp;amp;stream, phonebook o)&lt;br /&gt;
{&lt;br /&gt;
  stream &amp;lt;&amp;lt; o.name &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  stream &amp;lt;&amp;lt; &amp;quot;(&amp;quot; &amp;lt;&amp;lt; o.areacode &amp;lt;&amp;lt; &amp;quot;) &amp;quot;;&lt;br /&gt;
  stream &amp;lt;&amp;lt; o.prefix &amp;lt;&amp;lt; &amp;quot;-&amp;quot; &amp;lt;&amp;lt; o.num &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
   &lt;br /&gt;
  return stream; // must return stream&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  phonebook a(&amp;quot;A&amp;quot;, 111, 555, 1234);&lt;br /&gt;
  phonebook b(&amp;quot;B&amp;quot;, 312, 555, 5768);&lt;br /&gt;
  phonebook c(&amp;quot;C&amp;quot;, 212, 555, 9991);&lt;br /&gt;
   &lt;br /&gt;
  cout &amp;lt;&amp;lt; a &amp;lt;&amp;lt; b &amp;lt;&amp;lt; c;&lt;br /&gt;
   &lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Overload ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;cstring&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
   &lt;br /&gt;
class phonebook {&lt;br /&gt;
  // now private&lt;br /&gt;
  char name[80];&lt;br /&gt;
  int areacode;&lt;br /&gt;
  int prefix;&lt;br /&gt;
  int num;&lt;br /&gt;
public:&lt;br /&gt;
  phonebook(char *n, int a, int p, int nm)&lt;br /&gt;
  {&lt;br /&gt;
    strcpy(name, n);&lt;br /&gt;
    areacode = a;&lt;br /&gt;
    prefix = p;&lt;br /&gt;
    num = nm;&lt;br /&gt;
  }&lt;br /&gt;
  friend ostream &amp;amp;operator&amp;lt;&amp;lt;(ostream &amp;amp;stream, phonebook o);&lt;br /&gt;
};&lt;br /&gt;
   &lt;br /&gt;
// Display name and phone number.&lt;br /&gt;
ostream &amp;amp;operator&amp;lt;&amp;lt;(ostream &amp;amp;stream, phonebook o)&lt;br /&gt;
{&lt;br /&gt;
  stream &amp;lt;&amp;lt; o.name &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  stream &amp;lt;&amp;lt; &amp;quot;(&amp;quot; &amp;lt;&amp;lt; o.areacode &amp;lt;&amp;lt; &amp;quot;) &amp;quot;;&lt;br /&gt;
  stream &amp;lt;&amp;lt; o.prefix &amp;lt;&amp;lt; &amp;quot;-&amp;quot; &amp;lt;&amp;lt; o.num &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
   &lt;br /&gt;
  return stream; // must return stream&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  phonebook a(&amp;quot;A&amp;quot;, 111, 555, 1234);&lt;br /&gt;
  phonebook b(&amp;quot;B&amp;quot;, 312, 555, 5768);&lt;br /&gt;
  phonebook c(&amp;quot;C&amp;quot;, 212, 555, 9991);&lt;br /&gt;
   &lt;br /&gt;
  cout &amp;lt;&amp;lt; a &amp;lt;&amp;lt; b &amp;lt;&amp;lt; c;&lt;br /&gt;
   &lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Overload ostream and istream operator==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
#include &amp;lt;cstring&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class MyClass {&lt;br /&gt;
  char name[80];&lt;br /&gt;
  char areacode[4];&lt;br /&gt;
  char prefix[4];&lt;br /&gt;
  char num[5];&lt;br /&gt;
public:&lt;br /&gt;
  MyClass() { };&lt;br /&gt;
  MyClass(char *n, char *a, char *p, char *nm)&lt;br /&gt;
  {&lt;br /&gt;
    strcpy(name, n);&lt;br /&gt;
    strcpy(areacode, a);&lt;br /&gt;
    strcpy(prefix, p);&lt;br /&gt;
    strcpy(num, nm);&lt;br /&gt;
  }&lt;br /&gt;
  friend ostream &amp;amp;operator&amp;lt;&amp;lt;(ostream &amp;amp;stream, MyClass o);&lt;br /&gt;
  friend istream &amp;amp;operator&amp;gt;&amp;gt;(istream &amp;amp;stream, MyClass &amp;amp;o);&lt;br /&gt;
};&lt;br /&gt;
// Display name and phone number.&lt;br /&gt;
ostream &amp;amp;operator&amp;lt;&amp;lt;(ostream &amp;amp;stream, MyClass o)&lt;br /&gt;
{&lt;br /&gt;
  stream &amp;lt;&amp;lt; o.name &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  stream &amp;lt;&amp;lt; &amp;quot;(&amp;quot; &amp;lt;&amp;lt; o.areacode &amp;lt;&amp;lt; &amp;quot;) &amp;quot;;&lt;br /&gt;
  stream &amp;lt;&amp;lt; o.prefix &amp;lt;&amp;lt; &amp;quot;-&amp;quot;;&lt;br /&gt;
  stream &amp;lt;&amp;lt; o.num &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  return stream; // must return stream&lt;br /&gt;
}&lt;br /&gt;
// Input name and telephone number.&lt;br /&gt;
istream &amp;amp;operator&amp;gt;&amp;gt;(istream &amp;amp;stream, MyClass &amp;amp;o)&lt;br /&gt;
{&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Enter name: &amp;quot;;&lt;br /&gt;
  stream &amp;gt;&amp;gt; o.name;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Enter area code: &amp;quot;;&lt;br /&gt;
  stream &amp;gt;&amp;gt; o.areacode;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Enter prefix: &amp;quot;;&lt;br /&gt;
  stream &amp;gt;&amp;gt; o.prefix;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Enter number: &amp;quot;;&lt;br /&gt;
  stream &amp;gt;&amp;gt; o.num;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  return stream;&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  MyClass a;&lt;br /&gt;
  char c;&lt;br /&gt;
  fstream pb(&amp;quot;phone&amp;quot;, ios::in | ios::out | ios::app);&lt;br /&gt;
  if(!pb) {&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Cannot open phone book file.\n&amp;quot;;&lt;br /&gt;
    return 1;&lt;br /&gt;
  }&lt;br /&gt;
  cin &amp;gt;&amp;gt; a;&lt;br /&gt;
  pb &amp;lt;&amp;lt; a;    // write to disk&lt;br /&gt;
  char ch;&lt;br /&gt;
  pb.seekg(0, ios::beg);&lt;br /&gt;
  while(!pb.eof()) {&lt;br /&gt;
    pb.get(ch);&lt;br /&gt;
    if(!pb.eof()) cout &amp;lt;&amp;lt; ch;&lt;br /&gt;
 }&lt;br /&gt;
 pb.clear();  // reset eof&lt;br /&gt;
 cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
 pb.close();&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Cannot open phone book file.&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>