Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

I need help writing this fragment of code in C++: Write std::istream& operator >>(std::istream& is, rgb& colour) Define the operator overload of >>, i.e., std::istream&

I need help writing this fragment of code in C++:

Write std::istream& operator >>(std::istream& is, rgb& colour)

Define the operator overload of >>, i.e., std::istream& operator >>(std::istream& is, rgb& colour), as follows:

  • Read in an rgb structure into the colour parameter (i.e., the second parameter to this function).
    • The values are read in as whitespace-delimited numbers between 0 and 255.
    • The components will always appear in this order in the input stream: red, green, blue.
  • Regardless of how this function executes, its return statement is always return is; (i.e., the first std::istream& argument is returned).
  • If any component cannot be read in, then set the stream to "fail" with is.setstate(ios_base::failbit); and return from the function.
  • If any component cannot be read in, then ensure you never alter/update any values in colour (i.e., the second parameter to this function).
    • ADVICE: When reading in the components, declare them as local unsigned (not unsigned char) variables.

Write std::ostream& operator <<(std::ostream& os, rgb const& colour)

Define the operator overload of <<, i.e., std::ostream& operator <<(std::ostream& os, rgb const& colour), as follows:

  • Write out the contents of the provided rgb structure (i.e., colour --the second parameter to this function) to the output stream, os. Its components must be output in this order: red, green, blue. Also the components must be written out as unsigned (decimal) integers.
  • This function's return statement is always return os; (i.e., it returns the first parameter, os, to the function).
  • ADVICE:
    • Writing to os is just like writing values to std::cout, e.g., os << 34; would output the integer 34 to os.
    • It is legal and preferable when possible to write multiple values to os using more than one <<, e.g., os << 12 << ' ' << 24;
    • Notice that writing os << colour.red; will output a character --not an integer's numeric value. This is not desired --you are required to output an unsigned integer!
    • The C++ way to convert an unsigned char to an unsigned integer is to use static_cast, e.g., os << static_cast(colour.red);
      • NOTE: C-style casts are prohibited in this course as C++ has 4 special cast operators that should be used instead when needed.
Code: #include // for std::sqrt #include // for std::array #include // for std::vector #include // for std::numeric_limits #include // for std::string #include // for std::istream #include // for std::ostream #include // for std::cin, std::cout #include // for std::transform using namespace std; // place this after the #includes

struct rgb { unsigned char red,

unsigned char green;

unsigned char blue; };

istream& operator >>(istream& is, rgb& colour) { //code goes here }

ostream& operator <<(ostream& os, rgb const& colour) { //code goes here }

//You can now test your code, using a main() like this:

int main()

{

rgb value{}; // this declares an instance of the rgb structure

if (cin >> value)

cout << " Read successful. Writing: " << value << ' ';

}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Concepts

Authors: David M Kroenke, David J Auer

6th Edition

0132742926, 978-0132742924

More Books

Students also viewed these Databases questions