Lect6.ppt

C++ string Class
Chapter 6
1
Agenda
String Basics (cin, getline ) 
string operations
Table Output using setw()
string I/O using cin & getline()
Functions that take string parameters
2
What’s a string?
A string is a sequence of letters in quotes
“Hello”
“C++ is fun!”
“” (empty string)
cout<<“This is a string literal”<<endl;
ofstream fout(“accnts.txt”);
this is also a string literal
3
A string variable stores strings
string s1; // empty string
string s2 = “Hello World”;
string s3(60, ‘*’);
//s3 contains 60 asterisks
s1=s2; //copy string s2 into s1
cout<<“String s1 holds ”<<s1<<endl;
cout<<s3<<endl;
4
#include <string> to use string
string is a class that was created in ’98 to
improve on C-strings (tedious arrays of char)
The whole C++ standard was revised as well
Keep using these post ’98 libraries :
#include <iostream>
#include <string>
using namespace std;
5
#include Libraries should be consistent
Pre ’98 Standard
Post ’98 Standard
<iostream.h>
<fstream.h>
<iomanip.h>
<math.h>
<stdlib.h>
<string> new C++ string
<string.h> old C-string
<iostream>
<fstream>
<iomanip>
<cmath>
<cstdlib>
<string> new C++ string
<cstring> old C-string
You must also add
using namespace std;
6
string I/O
cin and cout (<< and >> ) work the same
cout<<“Enter two strings”<<endl;
cin>>s1>>s2; // whitespace separates strings
You type
You get
Gong Li
s1
s2
Gong
Li
Problem: How do you get s1 to hold “Gong Li” ???
7
string input with getline( )
getline( ) Reads everything until a ‘\n’ is found
getline(cin, s1);
getline(cin, s2);
You type
Gong Li
Quoth the Raven, “Nevermore!”
You get
s1
Gong Li
s2
Quoth the Raven, “Nevermore!”
8
Agenda
String Basics (cin, getline )
string operations 
Table Output using setw()
string I/O using cin & getline()
Functions that take string parameters
9
C++ string operations
Length of a C++ string can be found as :
s.length(); // returns length of s
C++ strings can be compared using relational
operators like :
if(s2 < s5) //…
if(name == “Jones”)
C++ strings can be concatenated and appended
using the + and the += operators :
string s6 = s5 + “HIJK”;
s2 += s5;
10
String quiz
T/F
T/F
T/F
(“Salty” < “Sweet”)
(“aardvark” == “Aardvark”)
(“John” > “john”)
What does full hold?
string last=“Woods”, first = “Tiger”, full;
a) full = first + last;
_______________
b) full = first + “ “ + last; _______________
c) full = last + “, ” + first; _______________
What does k hold?
int k = first.length( );
_______________
11
Try running name.cpp
Modify to add initial and last_name together
then modify to enter full name using getline()
// name.cpp
#include <iostream>
#include <string>
using namespace std;
int main()
{
char initial;
string last_name;
cout << "Enter first initial: ";
cin >> initial;
cout << "Enter your last name: ";
cin >> last_name;
cout << last_name << ", " << initial << '.'<< endl;
return 0;
}
12
Agenda
String Basics (cin, getline )
string operations
Table Output using setw() 
string I/O using cin & getline()
Functions that take string parameters
13
#include<iomanip>
Creating Space in Output

The setw function specifies the number of
spaces for the next item


Applies only to the next item of output
Example: To print the digit 7 in four spaces use
outfile<<setw(4)<< 7 << endl;

Three of the spaces will be blank
7
(ios::left)
Slide 14
// sqrts.cpp
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
Experiment with sqrts.cpp
produce table of numbers
int main()
{
int n;
cout << " N sqrt(N)" << endl;
cout << setiosflags(ios::fixed | ios::showpoint)
<< setprecision(3);
Sets column width
for (n=1; n<=10; n++)
{
cout << setw(2) << n;
cout << setw(8) << sqrt(n);
cout << endl;
}
return 0;
}
15
int main()
{
const double RATE = 4.55;
int num_tutors;
int tutor;
int hours;
string name;
ofstream fout("output.txt");
Experiment with pay.cpp
Produce table of strings
And numbers
cout << "How many tutors worked this week? ";
cin >> num_tutors;
fout << "NAME" << setw(12) << "HOURS" << setw(10)
<< "PAY" << endl;
for (tutor=1; tutor<=num_tutors; tutor++)
{
cout << "Tutor's name and hours worked: ";
cin >> name >> hours;
fout << setiosflags(ios::fixed | ios::showpoint)
<< setprecision(2);
fout << name << setw(16-name.length()) << hours
<< setw(10) << hours*RATE << endl;
}
}
Notice
Complex
setw
Start of Homework Problem 11
16
Agenda
String Basics (cin, getline )
string operations
Table Output using setw()
string I/O using cin & getline() 
Functions that take string parameters
17
Warning—weird behavior mixing
cin>> and getline( )
// It reads no characters for name.
#include <iostream>
#include <string>
using namespace std;
Run nochars.cpp and see what happens
int main()
{
Then see how it’s fixed in name_age.cpp
string name;
int age;
cout << "Enter your age: ";
cin >> age;
cout << "Name (first last): ";
getline (cin, name);
cout << name << ", you don't look "
<< age << ".\n";
return 0;
}
18
Agenda
String Basics (cin, getline )
string operations
Table Output using setw()
string I/O using cin & getline()
Functions that take string parameters 
19
Passing strings to functions
Just like other parameters, strings can be
passed to and returned from functions
string AddJunior(string name)
{
name=name+”, Jr.”;
return name;
}
FUNCTION CALL:
string son;
son=AddJunior(“Hank Williams”);
Useful for Prob 6, 7
20
Finally !!! … THE END 
21