# Exercise 1-0

Compile, execute, and test the programs in this chapter.

# Solution

I will be taking the programs directly from the book (chapter 1 – Working with Strings), test run them, and see what we get. This exercise is purely to get our hands dirty right away on writing a submitting very simple programs on handling strings. Nothing too clever.

## Test (Program 1)

The goal of this program is to

• ask for a person’s name,
• read the name in as a string variable, and
• output a greeting message.
// ask for a person's name, and greet the person
#include <iostream>
#include <string>

int main()
{
// ask for the person's name

std::string name;   //define name
std::cin >> name;   //read into name

// write a greeting
std::cout << "Hello, " << name << "!" << std::endl;
return 0;
}


## Result (Program 1)

Run the program. The followings are produced in the console output window:

Please enter your first name:


Type in some texts (my name) on the keyboard

Please enter your first name: Johnny


Hit enter key and it gives:

Please enter your first name: Johnny
Hello, Johnny!

Process returned 0 (0x0)   execution time : 2.631 s
Press any key to continue.


## Test (Program 2)

The goal of program 2 is to read in a person’s name, and generate a framed greeting like this:

******************
*                *
* Hello, Johnny! *
*                *
******************


To do this the following C++ program is taken directly from the book.

// ask for a person's name, and generate a framed greeting
#include <iostream>
#include <string>

int main()
{
std::string name;   //define name
std::cin >> name;   //read into name

// build the message that we intend to write
const std::string greeting = "Hello, " + name + "!";

// build the second and forth lines of the output
const std::string spaces(greeting.size(),' ');
const std::string second = "* " + spaces + " *";
const std::string first(second.size(),'*');

// write it all
std::cout << std::endl;
std::cout << first << std::endl;
std::cout << second << std::endl;
std::cout << "* " << greeting << " *" << std::endl;
std::cout << second << std::endl;
std::cout << first << std::endl;
return 0;
}


## Result (Program 2)

Run the program. The followings are produced in the console output window:

Please enter your first name:


Type in some texts (my name) on the keyboard

Please enter your first name: Johnny


Hit enter key and it gives:

Please enter your first name: Johnny

******************
*                *
* Hello, Johnny! *
*                *
******************

Process returned 0 (0x0)   execution time : 2.520 s
Press any key to continue.


Some core learning:

• Use double quote to define string literal. Use single quote to define character (char) literal.
• We can use + to concatenate a string and a string literal (and vice versa), or a string and a string, but not a string with a string literal (nor vice versa). i.e.
• string + string is okay.
• string literal + string is okay.
• string + string literal is okay.
• string literal + string literal is NOT okay.
• Use the object component size() , which is a function, to determine the length (number of characters) of a string (the object itself). e.g. greeting.size gives the length of the string greeting.
• Refer to the book to see the various ways to define a string variables, including the use of overload.
• Keep It Simple and Stupid (KISS) – write the code in a way that is easy to write and understand. Nothing too clever.

# Reference

Koenig, Andrew & Moo, Barbara E., Accelerated C++, Addison-Wesley, 2000