{"id":1863,"date":"2025-01-25T20:42:33","date_gmt":"2025-01-25T20:42:33","guid":{"rendered":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/?page_id=1863"},"modified":"2025-01-25T21:45:11","modified_gmt":"2025-01-25T21:45:11","slug":"input-of-user-defined-types","status":"publish","type":"page","link":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/topics\/c-details\/i-o-streams\/input-of-user-defined-types\/","title":{"rendered":"Input of User-Defined Types"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Input_of_User-Defined_Types\"><\/span>Input of User-Defined Types<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Input may be defined in a similar way:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#000000;--cbp-line-number-width:calc(1 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(0, 0, 0, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"class Person\n{\npublic:\n\t\/\/ \u2026\n\tfriend\n\tistream &amp;operator&gt;&gt;(istream &amp;os, Person &amp;p);\nprivate:\n\t\/\/ \u2026\n};\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #0000FF\">class<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">Person<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #0000FF\">public:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\t\/\/ \u2026<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">\t<\/span><span style=\"color: #0000FF\">friend<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">\t<\/span><span style=\"color: #267F99\">istream<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #AF00DB\">operator&gt;&gt;<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #267F99\">istream<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #001080\">os<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #267F99\">Person<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #001080\">p<\/span><span style=\"color: #000000\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #0000FF\">private:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\t\/\/ \u2026<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">};<\/span><\/span><\/code><\/pre><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>But it&#8217;s a little trickier on input, because you have to get the formatting exactly right (just as <strong>scanf()<\/strong> is trickier to use than <strong>printf() <\/strong>in C).<\/p>\n<\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Example\"><\/span>Example<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Let&#8217;s assume that we wish to read back the exact same stuff we output before from the <strong><code>cout &lt;&lt; p<\/code><\/strong>, including labels:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#000000;--cbp-line-number-width:calc(2 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(0, 0, 0, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"\/\/\n\/\/  Person.h\n\/\/  iostreams - User-defined types\n\/\/\n\/\/  Created by Bryan Higgs on 9\/4\/24.\n\/\/\n\n#ifndef Person_h\n#define Person_h\n\n#include &lt;iostream&gt;\n\nclass Person\n{\npublic:\n  \/\/ Constructor\n  Person(const std::string &amp;nm,\n         const std::string &amp;street = &quot;&quot;, \n         const std::string &amp;town = &quot;&quot;,\n         const std::string &amp;state = &quot;&quot;,\n         int a = -1);\n  \n  \/\/ Access member functions\n  const std::string &amp;getName() const { return m_name; }\n  const std::string &amp;getStreet() const { return m_street; }\n  const std::string &amp;getTown() const { return m_town; }\n  const std::string &amp;getState() const { return m_state; }\n  const int getAge() const { return m_age; }\n  \n  \/\/ Mutator member functions\n  void setStreet(const std::string &amp;street) { m_street = street; }\n  void setTown(const std::string &amp;town) { m_town = town; }\n  void setState(const std::string &amp;state) { m_state = state; }\n  void setAge(int age) { m_age = age; }\n  \n  friend\n  std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const Person &amp;p);\n  \n  friend\n  std::istream &amp;operator&gt;&gt;(std::istream &amp;is, Person &amp;p);\n\nprivate:\n  std::string m_name;\n  std::string m_street;\n  std::string m_town;\n  std::string m_state;\n  int  m_age;\n};\n\n#endif \/* Person_h *\/\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  Person.h<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  iostreams - User-defined types<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  Created by Bryan Higgs on 9\/4\/24.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#ifndef<\/span><span style=\"color: #0000FF\"> Person_h<\/span><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#define<\/span><span style=\"color: #0000FF\"> Person_h<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#include<\/span><span style=\"color: #0000FF\"> <\/span><span style=\"color: #A31515\">&lt;iostream&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #0000FF\">class<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">Person<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #0000FF\">public:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">  \/\/ Constructor<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">Person<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #267F99\">string<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #001080\">nm<\/span><span style=\"color: #000000\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">         <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #267F99\">string<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #001080\">street<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #A31515\">&quot;&quot;<\/span><span style=\"color: #000000\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">         <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #267F99\">string<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #001080\">town<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #A31515\">&quot;&quot;<\/span><span style=\"color: #000000\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">         <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #267F99\">string<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #001080\">state<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #A31515\">&quot;&quot;<\/span><span style=\"color: #000000\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">         <\/span><span style=\"color: #0000FF\">int<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">a<\/span><span style=\"color: #000000\"> = -<\/span><span style=\"color: #098658\">1<\/span><span style=\"color: #000000\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">  \/\/ Access member functions<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #267F99\">string<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #795E26\">getName<\/span><span style=\"color: #000000\">() <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> { <\/span><span style=\"color: #AF00DB\">return<\/span><span style=\"color: #000000\"> m_name; }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #267F99\">string<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #795E26\">getStreet<\/span><span style=\"color: #000000\">() <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> { <\/span><span style=\"color: #AF00DB\">return<\/span><span style=\"color: #000000\"> m_street; }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #267F99\">string<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #795E26\">getTown<\/span><span style=\"color: #000000\">() <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> { <\/span><span style=\"color: #AF00DB\">return<\/span><span style=\"color: #000000\"> m_town; }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #267F99\">string<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #795E26\">getState<\/span><span style=\"color: #000000\">() <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> { <\/span><span style=\"color: #AF00DB\">return<\/span><span style=\"color: #000000\"> m_state; }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">int<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">getAge<\/span><span style=\"color: #000000\">() <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> { <\/span><span style=\"color: #AF00DB\">return<\/span><span style=\"color: #000000\"> m_age; }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">  \/\/ Mutator member functions<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">void<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">setStreet<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #267F99\">string<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #001080\">street<\/span><span style=\"color: #000000\">) { m_street = street; }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">void<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">setTown<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #267F99\">string<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #001080\">town<\/span><span style=\"color: #000000\">) { m_town = town; }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">void<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">setState<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #267F99\">string<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #001080\">state<\/span><span style=\"color: #000000\">) { m_state = state; }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">void<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">setAge<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #0000FF\">int<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">age<\/span><span style=\"color: #000000\">) { m_age = age; }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">friend<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #267F99\">ostream<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #AF00DB\">operator&lt;&lt;<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #267F99\">ostream<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #001080\">os<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">Person<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #001080\">p<\/span><span style=\"color: #000000\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">friend<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #267F99\">istream<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #AF00DB\">operator&gt;&gt;<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #267F99\">istream<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #001080\">is<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #267F99\">Person<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #001080\">p<\/span><span style=\"color: #000000\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #0000FF\">private:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::string m_name;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::string m_street;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::string m_town;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::string m_state;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">int<\/span><span style=\"color: #000000\">  m_age;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">};<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#endif<\/span><span style=\"color: #008000\"> \/* Person_h *\/<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Note how more complex the code is for input compared with output. <br>I don&#8217;t claim this is particularly efficient, and it clearly doesn&#8217;t scale as a solution (if we had lots more fields. etc.)<\/p>\n<\/blockquote>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#000000;--cbp-line-number-width:calc(2 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(0, 0, 0, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"\/\/\n\/\/  Person.cpp\n\/\/  iostreams - User-defined types\n\/\/\n\/\/  Created by Bryan Higgs on 9\/4\/24.\n\/\/\n\n#include &quot;Person.h&quot;\n#include &lt;iostream&gt;\n\n\/\/ Constructor\nPerson::Person(const std::string &amp;name,\n       const std::string &amp;street,\n       const std::string &amp;town,\n       const std::string &amp;state,\n       int age)\n  : m_name(name), m_street(street), m_town(town),\n    m_state(state), m_age(age)\n{ }\n\nstatic const char NAME[]  = &quot;Name:   &quot;;\nstatic const char STREET[]  = &quot;Street: &quot;;\nstatic const char TOWN[]  = &quot;Town:   &quot;;\nstatic const char STATE[]  = &quot;State:  &quot;;\nstatic const char AGE[]  = &quot;Age:    &quot;;\n\n\n\/\/ Overloaded operator &lt;&lt;\nstd::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, const Person &amp;p)\n{\n  return os &lt;&lt; NAME &lt;&lt; p.m_name &lt;&lt; std::endl\n            &lt;&lt; STREET &lt;&lt; p.m_street &lt;&lt; std::endl\n            &lt;&lt; TOWN &lt;&lt; p.m_town &lt;&lt; std::endl\n            &lt;&lt; STATE &lt;&lt; p.m_state &lt;&lt; std::endl\n            &lt;&lt; AGE &lt;&lt; p.m_age &lt;&lt; std::endl;\n}\n\n\/\/ Overloaded operator &gt;&gt;\nstd::istream &amp;operator&gt;&gt;(std::istream &amp;is, Person &amp;p)\n{\n  static char buffer[81];\n  static char value[81];\n\n  is.get(buffer, sizeof(NAME)); \/\/ Read the label\n  is.get(value, sizeof(value)); \/\/ Read the value\n  p.m_name = value;\n  is.getline(buffer, sizeof(buffer)); \/\/ Discard the newline\n  \n  is.get(buffer, sizeof(STREET));\n  is.get(value, sizeof(value));\n  p.m_street = value;\n  is.getline(buffer, sizeof(buffer));\n  \n  is.get(buffer, sizeof(TOWN));\n  is.get(value, sizeof(value));\n  p.m_town = value;\n  is.getline(buffer, sizeof(buffer));\n\n  is.get(buffer, sizeof(STATE));\n  is.get(value, sizeof(value));\n  p.m_state = value;\n  is.getline(buffer, sizeof(buffer));\n\n  is.get(buffer, sizeof(AGE));\n  is &gt;&gt; p.m_age;\n  is.getline(buffer, sizeof(buffer));\n\n  return is;\n}\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  Person.cpp<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  iostreams - User-defined types<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  Created by Bryan Higgs on 9\/4\/24.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#include<\/span><span style=\"color: #0000FF\"> <\/span><span style=\"color: #A31515\">&quot;Person.h&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#include<\/span><span style=\"color: #0000FF\"> <\/span><span style=\"color: #A31515\">&lt;iostream&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/ Constructor<\/span><\/span>\n<span class=\"line\"><span style=\"color: #267F99\">Person<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #795E26\">Person<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::string &amp;name,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">       <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::string &amp;street,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">       <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::string &amp;town,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">       <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::string &amp;state,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">       <\/span><span style=\"color: #0000FF\">int<\/span><span style=\"color: #000000\"> age)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  : <\/span><span style=\"color: #795E26\">m_name<\/span><span style=\"color: #000000\">(name), <\/span><span style=\"color: #795E26\">m_street<\/span><span style=\"color: #000000\">(street), <\/span><span style=\"color: #795E26\">m_town<\/span><span style=\"color: #000000\">(town),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #795E26\">m_state<\/span><span style=\"color: #000000\">(state), <\/span><span style=\"color: #795E26\">m_age<\/span><span style=\"color: #000000\">(age)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">{ }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #0000FF\">static<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> NAME[]  = <\/span><span style=\"color: #A31515\">&quot;Name:   &quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #0000FF\">static<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> STREET[]  = <\/span><span style=\"color: #A31515\">&quot;Street: &quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #0000FF\">static<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> TOWN[]  = <\/span><span style=\"color: #A31515\">&quot;Town:   &quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #0000FF\">static<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> STATE[]  = <\/span><span style=\"color: #A31515\">&quot;State:  &quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #0000FF\">static<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> AGE[]  = <\/span><span style=\"color: #A31515\">&quot;Age:    &quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #008000\">\/\/ Overloaded operator &lt;&lt;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #267F99\">ostream<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #AF00DB\">operator&lt;&lt;<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #267F99\">ostream<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #001080\">os<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">Person<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #001080\">p<\/span><span style=\"color: #000000\">)<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">{<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #AF00DB\">return<\/span><span style=\"color: #000000\"> os &lt;&lt; NAME &lt;&lt; <\/span><span style=\"color: #001080\">p<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">m_name<\/span><span style=\"color: #000000\"> &lt;&lt; <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::endl<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">            &lt;&lt; STREET &lt;&lt; <\/span><span style=\"color: #001080\">p<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">m_street<\/span><span style=\"color: #000000\"> &lt;&lt; <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::endl<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">            &lt;&lt; TOWN &lt;&lt; <\/span><span style=\"color: #001080\">p<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">m_town<\/span><span style=\"color: #000000\"> &lt;&lt; <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::endl<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">            &lt;&lt; STATE &lt;&lt; <\/span><span style=\"color: #001080\">p<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">m_state<\/span><span style=\"color: #000000\"> &lt;&lt; <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::endl<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">            &lt;&lt; AGE &lt;&lt; <\/span><span style=\"color: #001080\">p<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">m_age<\/span><span style=\"color: #000000\"> &lt;&lt; <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::endl;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #008000\">\/\/ Overloaded operator &gt;&gt;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #267F99\">istream<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #AF00DB\">operator&gt;&gt;<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::<\/span><span style=\"color: #267F99\">istream<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #001080\">is<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #267F99\">Person<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">&amp;<\/span><span style=\"color: #001080\">p<\/span><span style=\"color: #000000\">)<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">{<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">static<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">buffer<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #098658\">81<\/span><span style=\"color: #000000\">];<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">static<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">value<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #098658\">81<\/span><span style=\"color: #000000\">];<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">is<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #795E26\">get<\/span><span style=\"color: #000000\">(buffer, <\/span><span style=\"color: #0000FF\">sizeof<\/span><span style=\"color: #000000\">(NAME));<\/span><span style=\"color: #008000\"> \/\/ Read the label<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">is<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #795E26\">get<\/span><span style=\"color: #000000\">(value, <\/span><span style=\"color: #0000FF\">sizeof<\/span><span style=\"color: #000000\">(value));<\/span><span style=\"color: #008000\"> \/\/ Read the value<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">p<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">m_name<\/span><span style=\"color: #000000\"> = value;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">is<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #795E26\">getline<\/span><span style=\"color: #000000\">(buffer, <\/span><span style=\"color: #0000FF\">sizeof<\/span><span style=\"color: #000000\">(buffer));<\/span><span style=\"color: #008000\"> \/\/ Discard the newline<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">is<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #795E26\">get<\/span><span style=\"color: #000000\">(buffer, <\/span><span style=\"color: #0000FF\">sizeof<\/span><span style=\"color: #000000\">(STREET));<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">is<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #795E26\">get<\/span><span style=\"color: #000000\">(value, <\/span><span style=\"color: #0000FF\">sizeof<\/span><span style=\"color: #000000\">(value));<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">p<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">m_street<\/span><span style=\"color: #000000\"> = value;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">is<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #795E26\">getline<\/span><span style=\"color: #000000\">(buffer, <\/span><span style=\"color: #0000FF\">sizeof<\/span><span style=\"color: #000000\">(buffer));<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">is<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #795E26\">get<\/span><span style=\"color: #000000\">(buffer, <\/span><span style=\"color: #0000FF\">sizeof<\/span><span style=\"color: #000000\">(TOWN));<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">is<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #795E26\">get<\/span><span style=\"color: #000000\">(value, <\/span><span style=\"color: #0000FF\">sizeof<\/span><span style=\"color: #000000\">(value));<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">p<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">m_town<\/span><span style=\"color: #000000\"> = value;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">is<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #795E26\">getline<\/span><span style=\"color: #000000\">(buffer, <\/span><span style=\"color: #0000FF\">sizeof<\/span><span style=\"color: #000000\">(buffer));<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">is<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #795E26\">get<\/span><span style=\"color: #000000\">(buffer, <\/span><span style=\"color: #0000FF\">sizeof<\/span><span style=\"color: #000000\">(STATE));<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">is<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #795E26\">get<\/span><span style=\"color: #000000\">(value, <\/span><span style=\"color: #0000FF\">sizeof<\/span><span style=\"color: #000000\">(value));<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">p<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">m_state<\/span><span style=\"color: #000000\"> = value;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">is<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #795E26\">getline<\/span><span style=\"color: #000000\">(buffer, <\/span><span style=\"color: #0000FF\">sizeof<\/span><span style=\"color: #000000\">(buffer));<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">is<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #795E26\">get<\/span><span style=\"color: #000000\">(buffer, <\/span><span style=\"color: #0000FF\">sizeof<\/span><span style=\"color: #000000\">(AGE));<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  is &gt;&gt; <\/span><span style=\"color: #001080\">p<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">m_age<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #001080\">is<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #795E26\">getline<\/span><span style=\"color: #000000\">(buffer, <\/span><span style=\"color: #0000FF\">sizeof<\/span><span style=\"color: #000000\">(buffer));<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #AF00DB\">return<\/span><span style=\"color: #000000\"> is;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">}<\/span><\/span><\/code><\/pre><\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>&#8230; and here&#8217;s a main program to test it:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#000000;--cbp-line-number-width:calc(2 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(0, 0, 0, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"\/\/\n\/\/  main.cpp\n\/\/  iostreams - User-defined types\n\/\/\n\/\/  Created by Bryan Higgs on 9\/4\/24.\n\/\/\n\n#include &lt;iostream&gt;\n#include &quot;Person.h&quot;\n\nint main(int argc, const char * argv[]) \n{\n  Person p1(&quot;&quot;), p2(&quot;&quot;);\n\n  std::cout &lt;&lt; &quot;Enter data for Person 1:&quot; &lt;&lt; std::endl;\n  std::cin &gt;&gt; p1;\n  std::cout &lt;&lt; &quot;Enter data for Person 2:&quot; &lt;&lt; std::endl;\n  std::cin &gt;&gt; p2;\n\n  std::cout &lt;&lt; &quot;\\n+++Person 1++++&quot; &lt;&lt; std::endl &lt;&lt; p1;\n  std::cout &lt;&lt; &quot;\\n+++Person 2++++&quot; &lt;&lt; std::endl &lt;&lt; p2;\n\n  return 0;\n}\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  main.cpp<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  iostreams - User-defined types<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  Created by Bryan Higgs on 9\/4\/24.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#include<\/span><span style=\"color: #0000FF\"> <\/span><span style=\"color: #A31515\">&lt;iostream&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#include<\/span><span style=\"color: #0000FF\"> <\/span><span style=\"color: #A31515\">&quot;Person.h&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #0000FF\">int<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">main<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #0000FF\">int<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">argc<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">*<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">argv<\/span><span style=\"color: #000000\">[]) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  Person <\/span><span style=\"color: #795E26\">p1<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #A31515\">&quot;&quot;<\/span><span style=\"color: #000000\">), <\/span><span style=\"color: #795E26\">p2<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #A31515\">&quot;&quot;<\/span><span style=\"color: #000000\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::cout &lt;&lt; <\/span><span style=\"color: #A31515\">&quot;Enter data for Person 1:&quot;<\/span><span style=\"color: #000000\"> &lt;&lt; <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::endl;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::cin &gt;&gt; p1;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::cout &lt;&lt; <\/span><span style=\"color: #A31515\">&quot;Enter data for Person 2:&quot;<\/span><span style=\"color: #000000\"> &lt;&lt; <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::endl;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #000000\">  <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::cin &gt;&gt; p2;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::cout &lt;&lt; <\/span><span style=\"color: #A31515\">&quot;<\/span><span style=\"color: #EE0000\">\\n<\/span><span style=\"color: #A31515\">+++Person 1++++&quot;<\/span><span style=\"color: #000000\"> &lt;&lt; <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::endl &lt;&lt; p1;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::cout &lt;&lt; <\/span><span style=\"color: #A31515\">&quot;<\/span><span style=\"color: #EE0000\">\\n<\/span><span style=\"color: #A31515\">+++Person 2++++&quot;<\/span><span style=\"color: #000000\"> &lt;&lt; <\/span><span style=\"color: #267F99\">std<\/span><span style=\"color: #000000\">::endl &lt;&lt; p2;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #AF00DB\">return<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #098658\">0<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">}<\/span><\/span><\/code><\/pre><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>It outputs:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"padding-top:0px;padding-bottom:0px;line-height:1.4\"><code>Enter data for Person 1:\n<code><em>Name:   Fred Bloggs\nStreet: 15 Highland Terrace\nTown:   Cleveland\nState:  OH\nAge:    34<\/em><\/code>\n\nEnter data for Person 2:\n<code><em>Name:   Mary Smith\nStreet: 27 Doubleday Ave.\nTown:   Monterey\nState:  CA\nAge:    28<\/em><\/code>\n\n\n+++Person 1++++\nName:   Fred Bloggs\nStreet: 15 Highland Terrace\nTown:   Cleveland\nState:  OH\nAge:    34\n\n+++Person 2++++\nName:   Mary Smith\nStreet: 27 Doubleday Ave.\nTown:   Monterey\nState:  CA\nAge:    28\nProgram ended with exit code: 0<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>The <em>italicized text<\/em> was input to the program.<br>Note that I simply copied the output from the earlier program, and pasted it in for input. (You don&#8217;t want to do this manually, as it is very picky to get right!)<\/p>\n<\/blockquote>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:46px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button has-custom-font-size has-medium-font-size\"><a class=\"wp-block-button__link has-palette-color-8-color has-text-color has-link-color wp-element-button\" href=\"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/topics\/c-details\/i-o-streams\/writing-your-own-stream-manipulators\/\">Next: Writing Your Own Stream Manipulators<\/a><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Input of User-Defined Types Input may be defined in a similar way: But it&#8217;s a little trickier on input, because you have to get the formatting exactly right (just as scanf() is trickier to use than printf() in C). Example Let&#8217;s assume that we wish to read back the exact same stuff we output before [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":936,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1863","page","type-page","status-publish","hentry"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/pages\/1863","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/comments?post=1863"}],"version-history":[{"count":3,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/pages\/1863\/revisions"}],"predecessor-version":[{"id":1888,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/pages\/1863\/revisions\/1888"}],"up":[{"embeddable":true,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/pages\/936"}],"wp:attachment":[{"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/media?parent=1863"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}