CS 112 - Week 3 lecture 1 - 2022-09-06 TODAY WE WILL * announcements * more C++ overview/review! * interactive input in C++ * (if time) FILE input/output in C++ * prep for next class * if desired: * see Savitch Ch. 6 - more on interactive i/o and file i/o * see Savitch Ch. 7 - review of arrays ===== review: interactive output ===== * C++ iostream library provides classes and functions and some predefined objects for interactive stream input/output * remember: printing to the screen is NOT the same as RETURNING a value! * return: ENDS a function then and there, and its expression becomes the value of the completed function call * something like cout with << operator has the SIDE-EFFECT of printing to standard output -- does not end the function, what is written is not the value of the current function call * cout is an output stream object defined in iostream library and set to output to standard out * VERY frequently used with the operator << (sometimes called the insertion operator) IN THIS CONTEXT and after the << is expected to be an expression whose value is to be written to the output stream on the left-hand-side of the << using the default format for that expression's data type * char data is depicted without single quotes * string and and char* data are depicted without double quotes * double data - only about the first 7 significant decimal places are shown * and if a double value has no fractional (.0), then it is displayed with no fractional part (and no decimal point), even though it is stored as a double within the computer * these default depictions can be modified! ...for example, putting the special object boolalpha in an output stream requests that bool expressions be depicted as true, false * (and there are means for right-justifying string and char* data, depicting double values to a specific number of decimal places, etc.) * and the object endl or "\n" or '\n' says you want to output a newline character ===== * iostream also provides objects and classes and functions for interactive input! * cin is a predefined object attached to standard input, typically the user's keyboard cin can be used with the >> (sometimes called the extraction operator IN THIS CONTEXT) followed by an lvalue (an expression, such as a local variable, that can be assigned to, that can be on the LEFT-hand-side of an assignment statement), and it reads from the standard input/keyboard based on the lvalue's type, and tries to convert the characters entered into that lvalue's type and assign to it * NOTE that cin >> a_var; does cause the program to stop and wait for input from the user so we usually proceed this with a cout giving a PROMPT asking the user to enter something * BUT there are also functions that expect an INPUT stream as an argument, and cin can generally be used in those * some general cin-with->> input rules: * lvalue of type int? waits for (optionally) a + or - then (definitely) one or digits and the first non-digit STOPS it * lvalue of type char? waits for first non-blank-or-tab-or-newline character * lvalue of type string? waits for the first non-blank-or-tab-or-newline and then reads in all the non-blank-or-tab-or-newline characters until a blank-or-tab-or-newline is entered * lvalue of type double? ...like an int, but a decimal point is OK * what if you WANT blanks in your string? tabs? what if you WANT the option of an empty string entered? You want the getline FUNCTION! getline's 2-argument version... (getline is overloaded! it has a 2-argument AND a 3-argument version) ...expects an input stream and a string lvalue and it reads every character entered from then until a newline is entered into that string lvalue