SlideShare a Scribd company logo
1 of 54
C++ Programming:
Program Design Including
Data Structures, Third Edition
Chapter 8: User-Defined Simple Data
Types, Namespaces, and the string Type
Objectives
In this chapter you will:
• Learn how to create and manipulate your own
simple data type—called the enumeration
type
• Become aware of the typedef statement
• Learn about the namespace mechanism
• Explore the string data type, and learn how to
use the various string functions to manipulate
strings
Enumeration Type
• Data type - a set of values together with a set
of operations on those values
• To define a new simple data type, called
enumeration type, we need three things:
− A name for the data type
− A set of values for the data type
− A set of operations on the values
Enumeration Type (continued)
• A new simple data type can be defined by
specifying its name and the values, but not
the operations
• The values must be identifiers
Enumeration Type (continued)
• The syntax for enumeration type is:
• value1, value2, … are identifiers called
enumerators
• value1 < value2 < value3 <...
Enumeration Type (continued)
• Enumeration type is an ordered set of values
• If a value has been used in one enumeration
type
− It cannot be used by another in the same
block
• The same rules apply to enumeration types
declared outside of any blocks
Assignment
• The statement:
popularSport = FOOTBALL;
stores the word FOOTBALL into
popularSport
• The statement:
mySport = popularSport;
copies the contents of the variable
popularSport into mySport
Operations
• No arithmetic operation is allowed on
enumeration types
• The following statements are illegal:
Operations (continued)
• The increment and decrement operations are
not allowed on enumeration types
• The following statements are illegal:
Operations (continued)
Operations and Input/Output
• Because an enumeration is an ordered set of
values
− We can use relational operators with them
• The cast operator can be used to increment,
decrement, and compare values
− Values can be used in loops
• Input and output are defined only for built-in data
types such as int, char, double
• The enumeration type can be neither input nor
output (directly)
Functions and Enumeration Types
• Enumeration type can be passed as
parameters to functions either by value or by
reference
• A function can return a value of the
enumeration type
Anonymous Data Types
• Anonymous - a data type in which values are
directly specified in the variable declaration
with no type name, for example:
• Creating an anonymous type has drawbacks
• We cannot pass an anonymous type as a
parameter to a function
Anonymous Data Types
(continued)
• A function cannot return a value of an
anonymous type
• Values used in one can be used in another,
but they are treated differently
typedef Statement
• You can create synonyms or aliases to a
previously defined data type by using the
typedef statement
• The syntax of the typedef statement is:
• typedef does not create any new data types
• typedef creates an alias to an existing data
type
ANSI/ISO Standard C++
• ANSI/ISO standard C++ was officially
approved in July 1998
• Most of the recent compilers are also
compatible with ANSI/ISO standard C++
• For the most part, standard C++ and ANSI/ISO
standard C++ are the same, but
− ANSI/ISO Standard C++ has some features not
available in Standard C++
Namespaces
• When a header file, such as iostream, is
included in a program
− Global identifiers in the header file also
become global identifiers in the program
• If a global identifier in a program has the
same name as one of the global identifiers in
the header file
− The compiler will generate a syntax error
(such as identifier redefined)
• The same problem can occur if a program
uses third party libraries
Namespaces (continued)
• To overcome this problem, third party
vendors begin their global identifiers with a
special symbol
• Because compiler vendors begin their global
identifier with _ (underscore)
− To avoid linking errors, do not begin identifiers
in your program with _
• ANSI/ISO standard C++ attempts to solve this
problem of overlapping global identifier
names with the namespace mechanism
Syntax: namespace
• The syntax of the statement namespace is:
where a member is usually a variable
declaration, a named constant, a function, or
another namespace
Accessing a namespace Member
• The scope of a namespace member is local
to the namespace
• Usually two ways a namespace member can
be accessed outside the namespace
• One way is to use the syntax:
namespace_name::identifier
• To access the member rate of the
namespace globalType, the following
statement is required:
globalType::RATE
Accessing a namespace Member
(continued)
• To access the function printResult, the
following statement is required:
globalType::printResult();
• To simplify the accessing of all namespace
members:
using namespace namespace_name;
• To simplify the accessing of a specific
namespace member:
using namespace_name::identifier;
The using Statement
• After the using statement
− Not necessary to precede the
namespace_name and the scope resolution
operator before the namespace member
• If a namespace member and a global
identifier or a block identifier have the same
name
− namespace_name and scope resolution
operator must precede the namespace
member
The string Type
• To use the data type string, the program
must include the header file <string>
• The statement
string name = "William Jacob";
declares name to be a string variable and
also initializes name to "William Jacob"
• The first character in name, 'W', is in position
0, the second character, 'i', is in position 1,
and so on
The string Type (continued)
• The variable name is capable of storing any
size string
• Binary operator + (to allow the string
concatenation operation), and the array
subscript operator [], have been defined for
the data type string
• For example, if str1 = "Sunny", the
statement stores the string "Sunny Day" into
str2:
str2 = str1 + " Day";
length Function
• Length returns the number of characters
currently in the string
• The syntax to call the length function is:
strVar.length()
where strVar is variable of the type string
• length has no arguments
• length returns an unsigned integer
• The value returned can be stored in an integer
variable
size Function
• The function size is the same as the function
length
• Both functions return the same value
• The syntax to call the function size is:
strVar.size()
where strVar is variable of the type string
• As in the case of the function length, the
function size has no arguments
find Function
• find searches a string for the first occurrence of
a particular substring
• Returns an unsigned integer value of type
string::size_type giving the result of the
search
• The syntax to call the function find is:
strVar.find(strExp)
where strVar is a string variable and strExp
is a string expression evaluating to a string
• The string expression strExp can also be a
character
find Function (continued)
• If successful, find returns the position in
strVar where the match begins
• For the search to be successful, the match
must be exact
• If unsuccessful, find returns the special value
string::npos (“not a position within the
string”)
substr Function
• substr returns a particular substring of a
string
• The syntax to call the function substr is:
strVar.substr(expr1,expr2)
where expr1 and expr2 are expressions
evaluating to unsigned integers
substr Function (continued)
• The expression expr1 specifies a position
within the string (starting position of the
substring)
• The expression expr2 specifies the length of
the substring to be returned
swap Function
• swap interchanges the contents of two string
variables
• The syntax to use the function swap is
strVar1.swap(strVar2);
where strVar1 and strVar2 are string
variables
• Suppose you have the following statements:
string str1 = "Warm";
string str2 = "Cold";
• After str1.swap(str2); executes, the
value of str1 is "Cold" and the value of
str2 is "War
Programming Example: Pig Latin
Strings
• Program prompts user to input a string
− Then outputs the string in the pig Latin form
• The rules for converting a string into pig
Latin form are as follows:
1. If the string begins with a vowel, add the
string "-way" at the end of the string
− For example, the pig Latin form of the string
"eye" is "eye-way"
Pig Latin Strings (continued)
2. If the string does not begin with a vowel, first
add "-" at the end of the string
− Then move the first character of the string to
the end of the string until the first character of
the string becomes a vowel
− Next, add the string "ay" at the end
− For example, the pig Latin form of the string
"There" is "ere-Thay"
Pig Latin Strings (continued)
3. Strings such as "by" contain no vowels
− In cases like this, the letter y can be considered
a vowel
− For this program, the vowels are a, e, i, o, u,
y, A, E, I, O, U, and Y; the pig Latin form of
"by" is "y-bay"
4. Strings such as "1234" contain no vowels
− The pig Latin form of a string that has no vowels
in it is the string followed by the string "-way"
− For example, the pig Latin form of the string
"1234" is "1234-way"
Problem Analysis
• If str denotes a string
− Check the first character, str[0], of str
− If str[0] is a vowel, add "-way" at the end of str
− If the first character of str, str[0], is not a vowel
• First add "-" at the end of the string
• Remove the first character of str from str and put
it at end of str
• Now the second character of str becomes the first
character of str
Problem Analysis (continued)
− This process is repeated until either
• The first character of str is a vowel
• All characters of str are processed, in which
case str does not contain any vowels
Algorithm Design
• The program contains the following functions:
− isVowel - to determine whether a character is a vowel
− rotate - to move first character of str to the end of
str
− pigLatinString - to find the pig Latin form of str
• Steps in the Algorithm:
1. Get str
2. Use the function pigLatinString to find the pig
Latin form of str
3. Output the pig Latin form of str
Function rotate
• Takes a string as a parameter
• Removes the first character of the string
− Places it at end of the string by extracting the
substring starting at position 1 until the end of
the string, and then adding the first character of
the string
Function rotate (continued)
Function pigLatinString
• If pStr[0] is a vowel, add "-way" at end of pStr
• If pStr[0] is not a vowel
− Move the first character of pStr to the end of pStr
− The second character of pStr becomes the first character of
pStr
• Now pStr may or may not contain a vowel
− Use a bool variable, foundVowel, which is set to true if
pStr contains a vowel, and false otherwise
− Initialize foundVowel to false
Function pigLatinString
(continued)
− if pStr[0] is not a vowel, move str[0] to
the end of pStr by calling the function rotate
− Repeat third step until either the first character
of pStr becomes a vowel or all characters of
pStr have been checked
• Convert pStr into the pig Latin form
• Return pStr
Main Algorithm
1. Get the string
2. Call the function pigLatinString to find
the pig Latin form of the string
3. Output the pig Latin form of the string
Summary
• An enumeration type is a set of ordered
values
• Reserved word enum creates an enumeration
type
• No arithmetic operations are allowed on the
enumeration type
• Relational operators can be used with enum
values
• Enumeration type values cannot be input or
output directly
Summary (continued)
• An anonymous type is one where a variable’s
values are specified without any type name
• C++’s reserved word typedef creates
synonyms or aliases to previously defined
data types
• The namespace mechanism is a feature of
ANSI/ISO Standard C++
• A namespace member is usually a named
constant, variable, function, or another
namespace
Summary (continued)
• The keyword namespace must appear in the
using statement
• A string is a sequence of zero or more
characters
• Strings in C++ are enclosed in double
quotation marks
• In C++, [] is called the array subscript
operator
• The function length returns the number of
characters currently in the string
Summary (continued)
• The function size returns the number of
characters currently in the string
• The function find searches a string to locate
the first occurrence of a particular substring
• The function substr returns a particular
substring of a string
• The function swap is used to swap the
contents of two string variables

More Related Content

Similar to C++ User-Defined Data Types, Namespaces, Strings

Python_Unit_III.pptx
Python_Unit_III.pptxPython_Unit_III.pptx
Python_Unit_III.pptxssuserc755f1
 
CS4443 - Modern Programming Language - I Lecture (2)
CS4443 - Modern Programming Language - I  Lecture (2)CS4443 - Modern Programming Language - I  Lecture (2)
CS4443 - Modern Programming Language - I Lecture (2)Dilawar Khan
 
Unit I - 1R introduction to R program.pptx
Unit I - 1R introduction to R program.pptxUnit I - 1R introduction to R program.pptx
Unit I - 1R introduction to R program.pptxSreeLaya9
 
20BCT23 – PYTHON PROGRAMMING.pptx
20BCT23 – PYTHON PROGRAMMING.pptx20BCT23 – PYTHON PROGRAMMING.pptx
20BCT23 – PYTHON PROGRAMMING.pptxgokilabrindha
 
an introduction to c++ templates-comprehensive guide.ppt
an introduction to c++ templates-comprehensive guide.pptan introduction to c++ templates-comprehensive guide.ppt
an introduction to c++ templates-comprehensive guide.pptAbdullah Yousafzai
 
Arrays_and_Strings_in_C_Programming.pptx
Arrays_and_Strings_in_C_Programming.pptxArrays_and_Strings_in_C_Programming.pptx
Arrays_and_Strings_in_C_Programming.pptxsamreenghauri786
 
Chapter 2: Elementary Programming
Chapter 2: Elementary ProgrammingChapter 2: Elementary Programming
Chapter 2: Elementary ProgrammingEric Chou
 
An Introduction : Python
An Introduction : PythonAn Introduction : Python
An Introduction : PythonRaghu Kumar
 
CSC111-Chap_02.pdf
CSC111-Chap_02.pdfCSC111-Chap_02.pdf
CSC111-Chap_02.pdf2b75fd3051
 
2. Values and Data types in Python.pptx
2. Values and Data types in Python.pptx2. Values and Data types in Python.pptx
2. Values and Data types in Python.pptxdeivanayagamramachan
 
cassignmentii-170424105623.pdf
cassignmentii-170424105623.pdfcassignmentii-170424105623.pdf
cassignmentii-170424105623.pdfYRABHI
 
data types in C programming
data types in C programmingdata types in C programming
data types in C programmingHarshita Yadav
 
1-19 CPP Slides 2022-02-28 18_22_ 05.pdf
1-19 CPP Slides 2022-02-28 18_22_ 05.pdf1-19 CPP Slides 2022-02-28 18_22_ 05.pdf
1-19 CPP Slides 2022-02-28 18_22_ 05.pdfdhruvjs
 

Similar to C++ User-Defined Data Types, Namespaces, Strings (20)

Lecture 3.pptx
Lecture 3.pptxLecture 3.pptx
Lecture 3.pptx
 
Python_Unit_III.pptx
Python_Unit_III.pptxPython_Unit_III.pptx
Python_Unit_III.pptx
 
CS4443 - Modern Programming Language - I Lecture (2)
CS4443 - Modern Programming Language - I  Lecture (2)CS4443 - Modern Programming Language - I  Lecture (2)
CS4443 - Modern Programming Language - I Lecture (2)
 
Arrays Basics
Arrays BasicsArrays Basics
Arrays Basics
 
DSA
DSADSA
DSA
 
kotlin-nutshell.pptx
kotlin-nutshell.pptxkotlin-nutshell.pptx
kotlin-nutshell.pptx
 
Variables&DataTypes.pptx
Variables&DataTypes.pptxVariables&DataTypes.pptx
Variables&DataTypes.pptx
 
Unit I - 1R introduction to R program.pptx
Unit I - 1R introduction to R program.pptxUnit I - 1R introduction to R program.pptx
Unit I - 1R introduction to R program.pptx
 
20BCT23 – PYTHON PROGRAMMING.pptx
20BCT23 – PYTHON PROGRAMMING.pptx20BCT23 – PYTHON PROGRAMMING.pptx
20BCT23 – PYTHON PROGRAMMING.pptx
 
an introduction to c++ templates-comprehensive guide.ppt
an introduction to c++ templates-comprehensive guide.pptan introduction to c++ templates-comprehensive guide.ppt
an introduction to c++ templates-comprehensive guide.ppt
 
Arrays_and_Strings_in_C_Programming.pptx
Arrays_and_Strings_in_C_Programming.pptxArrays_and_Strings_in_C_Programming.pptx
Arrays_and_Strings_in_C_Programming.pptx
 
Chapter 2: Elementary Programming
Chapter 2: Elementary ProgrammingChapter 2: Elementary Programming
Chapter 2: Elementary Programming
 
An Introduction : Python
An Introduction : PythonAn Introduction : Python
An Introduction : Python
 
CSC111-Chap_02.pdf
CSC111-Chap_02.pdfCSC111-Chap_02.pdf
CSC111-Chap_02.pdf
 
2. Values and Data types in Python.pptx
2. Values and Data types in Python.pptx2. Values and Data types in Python.pptx
2. Values and Data types in Python.pptx
 
C language
C languageC language
C language
 
cassignmentii-170424105623.pdf
cassignmentii-170424105623.pdfcassignmentii-170424105623.pdf
cassignmentii-170424105623.pdf
 
data types in C programming
data types in C programmingdata types in C programming
data types in C programming
 
1-19 CPP Slides 2022-02-28 18_22_ 05.pdf
1-19 CPP Slides 2022-02-28 18_22_ 05.pdf1-19 CPP Slides 2022-02-28 18_22_ 05.pdf
1-19 CPP Slides 2022-02-28 18_22_ 05.pdf
 
unit1 python.pptx
unit1 python.pptxunit1 python.pptx
unit1 python.pptx
 

Recently uploaded

VIP Call Girl Bhiwandi Aashi 8250192130 Independent Escort Service Bhiwandi
VIP Call Girl Bhiwandi Aashi 8250192130 Independent Escort Service BhiwandiVIP Call Girl Bhiwandi Aashi 8250192130 Independent Escort Service Bhiwandi
VIP Call Girl Bhiwandi Aashi 8250192130 Independent Escort Service BhiwandiSuhani Kapoor
 
CALL ON ➥8923113531 🔝Call Girls Gosainganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Gosainganj Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Gosainganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Gosainganj Lucknow best sexual serviceanilsa9823
 
Dark Dubai Call Girls O525547819 Skin Call Girls Dubai
Dark Dubai Call Girls O525547819 Skin Call Girls DubaiDark Dubai Call Girls O525547819 Skin Call Girls Dubai
Dark Dubai Call Girls O525547819 Skin Call Girls Dubaikojalkojal131
 
Final Completion Certificate of Marketing Management Internship
Final Completion Certificate of Marketing Management InternshipFinal Completion Certificate of Marketing Management Internship
Final Completion Certificate of Marketing Management InternshipSoham Mondal
 
PM Job Search Council Info Session - PMI Silver Spring Chapter
PM Job Search Council Info Session - PMI Silver Spring ChapterPM Job Search Council Info Session - PMI Silver Spring Chapter
PM Job Search Council Info Session - PMI Silver Spring ChapterHector Del Castillo, CPM, CPMM
 
VIP Kolkata Call Girl Lake Gardens 👉 8250192130 Available With Room
VIP Kolkata Call Girl Lake Gardens 👉 8250192130  Available With RoomVIP Kolkata Call Girl Lake Gardens 👉 8250192130  Available With Room
VIP Kolkata Call Girl Lake Gardens 👉 8250192130 Available With Roomdivyansh0kumar0
 
Delhi Call Girls Greater Noida 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Greater Noida 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Greater Noida 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Greater Noida 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Callshivangimorya083
 
VIP Call Girls Service Jamshedpur Aishwarya 8250192130 Independent Escort Ser...
VIP Call Girls Service Jamshedpur Aishwarya 8250192130 Independent Escort Ser...VIP Call Girls Service Jamshedpur Aishwarya 8250192130 Independent Escort Ser...
VIP Call Girls Service Jamshedpur Aishwarya 8250192130 Independent Escort Ser...Suhani Kapoor
 
VIP Call Girl Bhilai Aashi 8250192130 Independent Escort Service Bhilai
VIP Call Girl Bhilai Aashi 8250192130 Independent Escort Service BhilaiVIP Call Girl Bhilai Aashi 8250192130 Independent Escort Service Bhilai
VIP Call Girl Bhilai Aashi 8250192130 Independent Escort Service BhilaiSuhani Kapoor
 
VIP Call Girls Firozabad Aaradhya 8250192130 Independent Escort Service Firoz...
VIP Call Girls Firozabad Aaradhya 8250192130 Independent Escort Service Firoz...VIP Call Girls Firozabad Aaradhya 8250192130 Independent Escort Service Firoz...
VIP Call Girls Firozabad Aaradhya 8250192130 Independent Escort Service Firoz...Suhani Kapoor
 
CALL ON ➥8923113531 🔝Call Girls Husainganj Lucknow best Female service 🧳
CALL ON ➥8923113531 🔝Call Girls Husainganj Lucknow best Female service  🧳CALL ON ➥8923113531 🔝Call Girls Husainganj Lucknow best Female service  🧳
CALL ON ➥8923113531 🔝Call Girls Husainganj Lucknow best Female service 🧳anilsa9823
 
Low Rate Call Girls Cuttack Anika 8250192130 Independent Escort Service Cuttack
Low Rate Call Girls Cuttack Anika 8250192130 Independent Escort Service CuttackLow Rate Call Girls Cuttack Anika 8250192130 Independent Escort Service Cuttack
Low Rate Call Girls Cuttack Anika 8250192130 Independent Escort Service CuttackSuhani Kapoor
 
Sonam +91-9537192988-Mind-blowing skills and techniques of Ahmedabad Call Girls
Sonam +91-9537192988-Mind-blowing skills and techniques of Ahmedabad Call GirlsSonam +91-9537192988-Mind-blowing skills and techniques of Ahmedabad Call Girls
Sonam +91-9537192988-Mind-blowing skills and techniques of Ahmedabad Call GirlsNiya Khan
 
Call Girls Alandi Road Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Alandi Road Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Alandi Road Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Alandi Road Call Me 7737669865 Budget Friendly No Advance Bookingroncy bisnoi
 
Delhi Call Girls South Delhi 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls South Delhi 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls South Delhi 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls South Delhi 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Callshivangimorya083
 
Delhi Call Girls In Atta Market 9711199012 Book Your One night Stand Call Girls
Delhi Call Girls In Atta Market 9711199012 Book Your One night Stand Call GirlsDelhi Call Girls In Atta Market 9711199012 Book Your One night Stand Call Girls
Delhi Call Girls In Atta Market 9711199012 Book Your One night Stand Call Girlsshivangimorya083
 
VIP Call Girls in Cuttack Aarohi 8250192130 Independent Escort Service Cuttack
VIP Call Girls in Cuttack Aarohi 8250192130 Independent Escort Service CuttackVIP Call Girls in Cuttack Aarohi 8250192130 Independent Escort Service Cuttack
VIP Call Girls in Cuttack Aarohi 8250192130 Independent Escort Service CuttackSuhani Kapoor
 
VIP Call Girls Service Saharanpur Aishwarya 8250192130 Independent Escort Ser...
VIP Call Girls Service Saharanpur Aishwarya 8250192130 Independent Escort Ser...VIP Call Girls Service Saharanpur Aishwarya 8250192130 Independent Escort Ser...
VIP Call Girls Service Saharanpur Aishwarya 8250192130 Independent Escort Ser...Suhani Kapoor
 
Resumes, Cover Letters, and Applying Online
Resumes, Cover Letters, and Applying OnlineResumes, Cover Letters, and Applying Online
Resumes, Cover Letters, and Applying OnlineBruce Bennett
 

Recently uploaded (20)

VIP Call Girl Bhiwandi Aashi 8250192130 Independent Escort Service Bhiwandi
VIP Call Girl Bhiwandi Aashi 8250192130 Independent Escort Service BhiwandiVIP Call Girl Bhiwandi Aashi 8250192130 Independent Escort Service Bhiwandi
VIP Call Girl Bhiwandi Aashi 8250192130 Independent Escort Service Bhiwandi
 
CALL ON ➥8923113531 🔝Call Girls Gosainganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Gosainganj Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Gosainganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Gosainganj Lucknow best sexual service
 
Dark Dubai Call Girls O525547819 Skin Call Girls Dubai
Dark Dubai Call Girls O525547819 Skin Call Girls DubaiDark Dubai Call Girls O525547819 Skin Call Girls Dubai
Dark Dubai Call Girls O525547819 Skin Call Girls Dubai
 
Final Completion Certificate of Marketing Management Internship
Final Completion Certificate of Marketing Management InternshipFinal Completion Certificate of Marketing Management Internship
Final Completion Certificate of Marketing Management Internship
 
PM Job Search Council Info Session - PMI Silver Spring Chapter
PM Job Search Council Info Session - PMI Silver Spring ChapterPM Job Search Council Info Session - PMI Silver Spring Chapter
PM Job Search Council Info Session - PMI Silver Spring Chapter
 
VIP Kolkata Call Girl Lake Gardens 👉 8250192130 Available With Room
VIP Kolkata Call Girl Lake Gardens 👉 8250192130  Available With RoomVIP Kolkata Call Girl Lake Gardens 👉 8250192130  Available With Room
VIP Kolkata Call Girl Lake Gardens 👉 8250192130 Available With Room
 
Delhi Call Girls Greater Noida 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Greater Noida 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Greater Noida 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Greater Noida 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
 
VIP Call Girls Service Jamshedpur Aishwarya 8250192130 Independent Escort Ser...
VIP Call Girls Service Jamshedpur Aishwarya 8250192130 Independent Escort Ser...VIP Call Girls Service Jamshedpur Aishwarya 8250192130 Independent Escort Ser...
VIP Call Girls Service Jamshedpur Aishwarya 8250192130 Independent Escort Ser...
 
VIP Call Girl Bhilai Aashi 8250192130 Independent Escort Service Bhilai
VIP Call Girl Bhilai Aashi 8250192130 Independent Escort Service BhilaiVIP Call Girl Bhilai Aashi 8250192130 Independent Escort Service Bhilai
VIP Call Girl Bhilai Aashi 8250192130 Independent Escort Service Bhilai
 
VIP Call Girls Firozabad Aaradhya 8250192130 Independent Escort Service Firoz...
VIP Call Girls Firozabad Aaradhya 8250192130 Independent Escort Service Firoz...VIP Call Girls Firozabad Aaradhya 8250192130 Independent Escort Service Firoz...
VIP Call Girls Firozabad Aaradhya 8250192130 Independent Escort Service Firoz...
 
CALL ON ➥8923113531 🔝Call Girls Husainganj Lucknow best Female service 🧳
CALL ON ➥8923113531 🔝Call Girls Husainganj Lucknow best Female service  🧳CALL ON ➥8923113531 🔝Call Girls Husainganj Lucknow best Female service  🧳
CALL ON ➥8923113531 🔝Call Girls Husainganj Lucknow best Female service 🧳
 
Low Rate Call Girls Cuttack Anika 8250192130 Independent Escort Service Cuttack
Low Rate Call Girls Cuttack Anika 8250192130 Independent Escort Service CuttackLow Rate Call Girls Cuttack Anika 8250192130 Independent Escort Service Cuttack
Low Rate Call Girls Cuttack Anika 8250192130 Independent Escort Service Cuttack
 
Sonam +91-9537192988-Mind-blowing skills and techniques of Ahmedabad Call Girls
Sonam +91-9537192988-Mind-blowing skills and techniques of Ahmedabad Call GirlsSonam +91-9537192988-Mind-blowing skills and techniques of Ahmedabad Call Girls
Sonam +91-9537192988-Mind-blowing skills and techniques of Ahmedabad Call Girls
 
Call Girls Alandi Road Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Alandi Road Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Alandi Road Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Alandi Road Call Me 7737669865 Budget Friendly No Advance Booking
 
Delhi Call Girls South Delhi 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls South Delhi 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls South Delhi 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls South Delhi 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
 
Delhi Call Girls In Atta Market 9711199012 Book Your One night Stand Call Girls
Delhi Call Girls In Atta Market 9711199012 Book Your One night Stand Call GirlsDelhi Call Girls In Atta Market 9711199012 Book Your One night Stand Call Girls
Delhi Call Girls In Atta Market 9711199012 Book Your One night Stand Call Girls
 
Call Girls In Prashant Vihar꧁❤ 🔝 9953056974🔝❤꧂ Escort ServiCe
Call Girls In Prashant Vihar꧁❤ 🔝 9953056974🔝❤꧂ Escort ServiCeCall Girls In Prashant Vihar꧁❤ 🔝 9953056974🔝❤꧂ Escort ServiCe
Call Girls In Prashant Vihar꧁❤ 🔝 9953056974🔝❤꧂ Escort ServiCe
 
VIP Call Girls in Cuttack Aarohi 8250192130 Independent Escort Service Cuttack
VIP Call Girls in Cuttack Aarohi 8250192130 Independent Escort Service CuttackVIP Call Girls in Cuttack Aarohi 8250192130 Independent Escort Service Cuttack
VIP Call Girls in Cuttack Aarohi 8250192130 Independent Escort Service Cuttack
 
VIP Call Girls Service Saharanpur Aishwarya 8250192130 Independent Escort Ser...
VIP Call Girls Service Saharanpur Aishwarya 8250192130 Independent Escort Ser...VIP Call Girls Service Saharanpur Aishwarya 8250192130 Independent Escort Ser...
VIP Call Girls Service Saharanpur Aishwarya 8250192130 Independent Escort Ser...
 
Resumes, Cover Letters, and Applying Online
Resumes, Cover Letters, and Applying OnlineResumes, Cover Letters, and Applying Online
Resumes, Cover Letters, and Applying Online
 

C++ User-Defined Data Types, Namespaces, Strings

  • 1. C++ Programming: Program Design Including Data Structures, Third Edition Chapter 8: User-Defined Simple Data Types, Namespaces, and the string Type
  • 2. Objectives In this chapter you will: • Learn how to create and manipulate your own simple data type—called the enumeration type • Become aware of the typedef statement • Learn about the namespace mechanism • Explore the string data type, and learn how to use the various string functions to manipulate strings
  • 3. Enumeration Type • Data type - a set of values together with a set of operations on those values • To define a new simple data type, called enumeration type, we need three things: − A name for the data type − A set of values for the data type − A set of operations on the values
  • 4. Enumeration Type (continued) • A new simple data type can be defined by specifying its name and the values, but not the operations • The values must be identifiers
  • 5. Enumeration Type (continued) • The syntax for enumeration type is: • value1, value2, … are identifiers called enumerators • value1 < value2 < value3 <...
  • 6. Enumeration Type (continued) • Enumeration type is an ordered set of values • If a value has been used in one enumeration type − It cannot be used by another in the same block • The same rules apply to enumeration types declared outside of any blocks
  • 7.
  • 8.
  • 9.
  • 10. Assignment • The statement: popularSport = FOOTBALL; stores the word FOOTBALL into popularSport • The statement: mySport = popularSport; copies the contents of the variable popularSport into mySport
  • 11. Operations • No arithmetic operation is allowed on enumeration types • The following statements are illegal:
  • 12. Operations (continued) • The increment and decrement operations are not allowed on enumeration types • The following statements are illegal:
  • 14. Operations and Input/Output • Because an enumeration is an ordered set of values − We can use relational operators with them • The cast operator can be used to increment, decrement, and compare values − Values can be used in loops • Input and output are defined only for built-in data types such as int, char, double • The enumeration type can be neither input nor output (directly)
  • 15. Functions and Enumeration Types • Enumeration type can be passed as parameters to functions either by value or by reference • A function can return a value of the enumeration type
  • 16. Anonymous Data Types • Anonymous - a data type in which values are directly specified in the variable declaration with no type name, for example: • Creating an anonymous type has drawbacks • We cannot pass an anonymous type as a parameter to a function
  • 17. Anonymous Data Types (continued) • A function cannot return a value of an anonymous type • Values used in one can be used in another, but they are treated differently
  • 18. typedef Statement • You can create synonyms or aliases to a previously defined data type by using the typedef statement • The syntax of the typedef statement is: • typedef does not create any new data types • typedef creates an alias to an existing data type
  • 19. ANSI/ISO Standard C++ • ANSI/ISO standard C++ was officially approved in July 1998 • Most of the recent compilers are also compatible with ANSI/ISO standard C++ • For the most part, standard C++ and ANSI/ISO standard C++ are the same, but − ANSI/ISO Standard C++ has some features not available in Standard C++
  • 20. Namespaces • When a header file, such as iostream, is included in a program − Global identifiers in the header file also become global identifiers in the program • If a global identifier in a program has the same name as one of the global identifiers in the header file − The compiler will generate a syntax error (such as identifier redefined) • The same problem can occur if a program uses third party libraries
  • 21. Namespaces (continued) • To overcome this problem, third party vendors begin their global identifiers with a special symbol • Because compiler vendors begin their global identifier with _ (underscore) − To avoid linking errors, do not begin identifiers in your program with _ • ANSI/ISO standard C++ attempts to solve this problem of overlapping global identifier names with the namespace mechanism
  • 22. Syntax: namespace • The syntax of the statement namespace is: where a member is usually a variable declaration, a named constant, a function, or another namespace
  • 23.
  • 24. Accessing a namespace Member • The scope of a namespace member is local to the namespace • Usually two ways a namespace member can be accessed outside the namespace • One way is to use the syntax: namespace_name::identifier • To access the member rate of the namespace globalType, the following statement is required: globalType::RATE
  • 25. Accessing a namespace Member (continued) • To access the function printResult, the following statement is required: globalType::printResult(); • To simplify the accessing of all namespace members: using namespace namespace_name; • To simplify the accessing of a specific namespace member: using namespace_name::identifier;
  • 26. The using Statement • After the using statement − Not necessary to precede the namespace_name and the scope resolution operator before the namespace member • If a namespace member and a global identifier or a block identifier have the same name − namespace_name and scope resolution operator must precede the namespace member
  • 27. The string Type • To use the data type string, the program must include the header file <string> • The statement string name = "William Jacob"; declares name to be a string variable and also initializes name to "William Jacob" • The first character in name, 'W', is in position 0, the second character, 'i', is in position 1, and so on
  • 28. The string Type (continued) • The variable name is capable of storing any size string • Binary operator + (to allow the string concatenation operation), and the array subscript operator [], have been defined for the data type string • For example, if str1 = "Sunny", the statement stores the string "Sunny Day" into str2: str2 = str1 + " Day";
  • 29. length Function • Length returns the number of characters currently in the string • The syntax to call the length function is: strVar.length() where strVar is variable of the type string • length has no arguments • length returns an unsigned integer • The value returned can be stored in an integer variable
  • 30.
  • 31. size Function • The function size is the same as the function length • Both functions return the same value • The syntax to call the function size is: strVar.size() where strVar is variable of the type string • As in the case of the function length, the function size has no arguments
  • 32. find Function • find searches a string for the first occurrence of a particular substring • Returns an unsigned integer value of type string::size_type giving the result of the search • The syntax to call the function find is: strVar.find(strExp) where strVar is a string variable and strExp is a string expression evaluating to a string • The string expression strExp can also be a character
  • 33. find Function (continued) • If successful, find returns the position in strVar where the match begins • For the search to be successful, the match must be exact • If unsuccessful, find returns the special value string::npos (“not a position within the string”)
  • 34.
  • 35. substr Function • substr returns a particular substring of a string • The syntax to call the function substr is: strVar.substr(expr1,expr2) where expr1 and expr2 are expressions evaluating to unsigned integers
  • 36. substr Function (continued) • The expression expr1 specifies a position within the string (starting position of the substring) • The expression expr2 specifies the length of the substring to be returned
  • 37.
  • 38. swap Function • swap interchanges the contents of two string variables • The syntax to use the function swap is strVar1.swap(strVar2); where strVar1 and strVar2 are string variables • Suppose you have the following statements: string str1 = "Warm"; string str2 = "Cold"; • After str1.swap(str2); executes, the value of str1 is "Cold" and the value of str2 is "War
  • 39. Programming Example: Pig Latin Strings • Program prompts user to input a string − Then outputs the string in the pig Latin form • The rules for converting a string into pig Latin form are as follows: 1. If the string begins with a vowel, add the string "-way" at the end of the string − For example, the pig Latin form of the string "eye" is "eye-way"
  • 40. Pig Latin Strings (continued) 2. If the string does not begin with a vowel, first add "-" at the end of the string − Then move the first character of the string to the end of the string until the first character of the string becomes a vowel − Next, add the string "ay" at the end − For example, the pig Latin form of the string "There" is "ere-Thay"
  • 41. Pig Latin Strings (continued) 3. Strings such as "by" contain no vowels − In cases like this, the letter y can be considered a vowel − For this program, the vowels are a, e, i, o, u, y, A, E, I, O, U, and Y; the pig Latin form of "by" is "y-bay" 4. Strings such as "1234" contain no vowels − The pig Latin form of a string that has no vowels in it is the string followed by the string "-way" − For example, the pig Latin form of the string "1234" is "1234-way"
  • 42. Problem Analysis • If str denotes a string − Check the first character, str[0], of str − If str[0] is a vowel, add "-way" at the end of str − If the first character of str, str[0], is not a vowel • First add "-" at the end of the string • Remove the first character of str from str and put it at end of str • Now the second character of str becomes the first character of str
  • 43. Problem Analysis (continued) − This process is repeated until either • The first character of str is a vowel • All characters of str are processed, in which case str does not contain any vowels
  • 44. Algorithm Design • The program contains the following functions: − isVowel - to determine whether a character is a vowel − rotate - to move first character of str to the end of str − pigLatinString - to find the pig Latin form of str • Steps in the Algorithm: 1. Get str 2. Use the function pigLatinString to find the pig Latin form of str 3. Output the pig Latin form of str
  • 45.
  • 46. Function rotate • Takes a string as a parameter • Removes the first character of the string − Places it at end of the string by extracting the substring starting at position 1 until the end of the string, and then adding the first character of the string
  • 48. Function pigLatinString • If pStr[0] is a vowel, add "-way" at end of pStr • If pStr[0] is not a vowel − Move the first character of pStr to the end of pStr − The second character of pStr becomes the first character of pStr • Now pStr may or may not contain a vowel − Use a bool variable, foundVowel, which is set to true if pStr contains a vowel, and false otherwise − Initialize foundVowel to false
  • 49. Function pigLatinString (continued) − if pStr[0] is not a vowel, move str[0] to the end of pStr by calling the function rotate − Repeat third step until either the first character of pStr becomes a vowel or all characters of pStr have been checked • Convert pStr into the pig Latin form • Return pStr
  • 50. Main Algorithm 1. Get the string 2. Call the function pigLatinString to find the pig Latin form of the string 3. Output the pig Latin form of the string
  • 51. Summary • An enumeration type is a set of ordered values • Reserved word enum creates an enumeration type • No arithmetic operations are allowed on the enumeration type • Relational operators can be used with enum values • Enumeration type values cannot be input or output directly
  • 52. Summary (continued) • An anonymous type is one where a variable’s values are specified without any type name • C++’s reserved word typedef creates synonyms or aliases to previously defined data types • The namespace mechanism is a feature of ANSI/ISO Standard C++ • A namespace member is usually a named constant, variable, function, or another namespace
  • 53. Summary (continued) • The keyword namespace must appear in the using statement • A string is a sequence of zero or more characters • Strings in C++ are enclosed in double quotation marks • In C++, [] is called the array subscript operator • The function length returns the number of characters currently in the string
  • 54. Summary (continued) • The function size returns the number of characters currently in the string • The function find searches a string to locate the first occurrence of a particular substring • The function substr returns a particular substring of a string • The function swap is used to swap the contents of two string variables