Lec6.ppt

advertisement
C++ string Class
Chapter 6
1
Agenda
String Basics (cin, getline ) 
string operations
mixed I/O using >> & getline()
Table Output using setw()
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( )
problem 2
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 
mixed I/O using >> & getline()
Table Output using setw()
Functions that take string parameters
9
C++ string operations
problem 4
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
Do Lab5 Problems 1-4
12
Agenda
String Basics (cin, getline )
string operations
mixed I/O using >> & getline() 
Table Output using setw()
Functions that take string parameters
13
Warning—weird behavior mixing >>
and getline( )
problem 5
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";
Console
Enter your age: 43
Name (first last):
, you don’t look 43.
14
Warning—weird behavior mixing >>
and getline( )
problem 5
string name;
int age;
cout << "Enter your age: ";
cin >> age;
 does not remove enter key (‘\n’)
cout << "Name (first last): ";
cin.ignore (80, '\n');  ignores ‘\n’ left by cin>>
getline (cin, name);
cout << name << ", you don't look "
Console
<< age << ".\n";
Another option:
use >> to read the string or
strings (instead of getline)
Enter your age: 43
Name (first last):Al Short
Al Short, you don’t look 43.
15
Agenda
String Basics (cin, getline )
string operations
mixed I/O using >> & getline()
Table Output using setw() 
Functions that take string parameters
16
#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
7
<<left<<
Slide 17
Application of setw( ) problem 6
Produces a table of square roots
int n;
cout << " N sqrt(N)" << endl;
cout << "-----------" << endl;
cout << fixed << showpoint<<setprecision(3);
Sets column width
for (n=1; n<=10; n++)
{
cout << setw(2) << n;
cout << setw(8) << sqrt(n);
cout << endl;
}
18
Application of setw( ) problem 7
Produce a formatted table of strings and numbers
const double RATE = 4.55;
int tutor;
int hours;
string name;
ofstream fout("output.txt");
Notice
Left and right
justification
for (tutor=1; tutor<=3; tutor++)
{
cout << "Tutor's name and hours worked: ";
cin >> name >> hours;
fout << fixed << showpoint << setprecision(2);
fout
<< left<< setw(15) << name
<< right << setw(10)<< hours
<< setw(10) << hours*RATE << endl;
}
19
Do 5,6,7 (skip 8 for now) and 9
20
Agenda
String Basics (cin, getline )
string operations
Table Output using setw()
string I/O using >> & getline()
Functions that take string parameters 
21
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”);
22
Finally !!! … THE END 
23
Download