CS 1031 Strings in C++ The string Class Definition of Strings How to declare strings in C++: the string class Operations on strings –Concatenation, comparison.

Slides:



Advertisements
Similar presentations
C Characters & Strings Character Review Character Handling Library Initialization String Conversion Functions String Handling Library Standard Input/Output.
Advertisements

 2003 Prentice Hall, Inc. All rights reserved Fundamentals of Characters and Strings Character constant –Integer value represented as character.
Strings.
Ch 8. Characters and Strings Timothy Budd 2 Characters and Literals Strings Char in C++ is normally an 8-bit quantity, whereas in Java it is a 16-bit.
Lecture 9. Lecture 9: Outline Strings [Kochan, chap. 10] –Character Arrays/ Character Strings –Initializing Character Strings. The null string. –Escape.
What is a pointer? First of all, it is a variable, just like other variables you studied So it has type, storage etc. Difference: it can only store the.
Strings CS240 Dick Steflik. What is a string A null terminated array of characters: char thisIsAString[10]; \0 The “\0” (null character)
Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Cpt S 122 – Data Structures Characters and Strings.
Current Assignments Homework 5 will be available tomorrow and is due on Sunday. Arrays and Pointers Project 2 due tonight by midnight. Exam 2 on Monday.
Chapter Fourteen Strings Revisited. Strings A string is an array of characters A string is a pointer to a sequence of characters A string is a complete.
Copyright © 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 12: More on C-Strings and the string Class Starting Out with.
Definition of Strings Generally speaking, a string is a sequence of characters c string c++ string class Examples: “hello”, “high school”, “H2O”. Typical.
Lesson 10 Characters, C-Strings, and the string Class CS1 Lesson John Cole1.
Chapter 10.
Chapter 8 Characters and Strings Acknowledgment The notes are adapted from those provided by Deitel & Associates, Inc. and Pearson Education Inc.
1 C-strings String = null-terminated array of characters The null character ('\0') specifies where the string terminates in memory. Example: The string.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Sixth Edition Chapter 12: More About.
CS Nov 2006 C-strings.
Starting Out with C++: Early Objects 5/e © 2006 Pearson Education. All Rights Reserved Starting Out with C++: Early Objects 5 th Edition Chapter 12 More.
C-strings Array with base type char One character per indexed variable
 2007 Pearson Education, Inc. All rights reserved C Characters and Strings.
Strings in C. Strings are Character Arrays Strings in C are simply arrays of characters. – Example:char s [10]; This is a ten (10) element array that.
1 Chapter 10 Characters, Strings, and the string class.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy.
CHAPTER 8 CHARACTER AND STRINGS
Chapter 8 Strings and Vectors (8.1 and 8.2). An Array of characters Defined as: char firstName[20]; char firstName[] = {‘T’, ‘i’, ‘m’}; // an array of.
CSIS 123A Lecture 6 Strings & Dynamic Memory. Introduction To The string Class Must include –Part of the std library You can declare an instance like.
Data Type string #include // C++ String class string str1, str2; // Default constructor cin >> str1 >> str2; cout
One Dimensional Arrays (Part2) Sorting Algorithms Searching Algorithms Character Strings The string Class. 1.
Dr. Yang, QingXiong (with slides borrowed from Dr. Yuen, Joe) LT8: Characters and Strings CS2311 Computer Programming.
Copyright © 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 12: More on C-Strings and the string Class Starting Out with.
Chapter 10. Characters, Strings and the string class Csc 125 Introduction to C++ Fall 2005.
C++ PROGRAMMING: PROGRAM DESIGN INCLUDING DATA STRUCTURES, FIFTH EDITION Chapter 10: Strings and string type.
Character Arrays Based on the original work by Dr. Roger deBry Version 1.0.
CS Midterm Study Guide Fall General topics Definitions and rules Technical names of things Syntax of C++ constructs Meaning of C++ constructs.
Copyright © 2012 Pearson Education, Inc. Chapter 10: Characters, C- Strings, and More About the string Class.
Copyright © 2012 Pearson Education, Inc. Chapter 10: Characters, C- Strings, and More About the string Class.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 10: Characters, Strings, and the string class.
Dale Roberts Department of Computer and Information Science, School of Science, IUPUI C-Style Strings Strings and String Functions Dale Roberts, Lecturer.
Characters, Strings, And The string Class Chapter 10.
Chapter 8: Character and String CMPD144: Programming 1.
Copyright © 2015, 2012, 2009 Pearson Education, Inc., Publishing as Addison-Wesley All rights reserved. Chapter 10: Characters, C- Strings, and More About.
CSC141- Introduction to Computer programming Teacher: AHMED MUMTAZ MUSTEHSAN Lecture – 21 Thanks for Lecture Slides:
Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:
CSC 270 – Survey of Programming Languages
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 10 Characters, Strings, and the string class.
CS 1430: Programming in C++ 1. Data Type string #include // C++ String class string str1, str2; // Default constructor cin >> str1 >> str2; cout
 2003 Prentice Hall, Inc. All rights reserved. 11 Fundamentals of Characters and Strings Character constant –Integer value of a character –Single quotes.
String Array (Multidimensional Arrays) 1. A string array is a multidimensional array of strings. It is declared in the following syntax: char variable_name[No_of_strings][size_of_each_string];
1 Strings in C++ The string Class Definition of Strings How to declare strings in C++: the string class Operations on strings –Concatenation, comparison.
C++ Programming Lecture 19 Strings The Hashemite University Computer Engineering Department (Adapted from the textbook slides)
Strings, Pointers and Tools
Chapter Characters, Strings, and the string class 10.
DCT1063 Programming 2 CHAPTER 3 STRINGS Mohd Nazri Bin Ibrahim Faculty of Computer, Media & Technology TATi University College
Strings, and the string Class. C-Strings C-string: sequence of characters stored in adjacent memory locations and terminated by NULL character The C-string.
1 Arrays and Pointers The name of an array is a pointer constant to the first element. Because the array’s name is a pointer constant, its value cannot.
CS113 Introduction to C Instructor: Ioannis A. Vetsikas Lecture 5 : September 4.
CSE 251 Dr. Charles B. Owen Programming in C1 Strings and File I/O.
ECE 103 Engineering Programming Chapter 29 C Strings, Part 2 Herbert G. Mayer, PSU CS Status 7/30/2014 Initial content copied verbatim from ECE 103 material.
Principles of Programming - NI Chapter 10: Character & String : In this chapter, you’ll learn about; Fundamentals of Strings and Characters The difference.
Characters, Strings, and the cstring Library
C Characters and Strings
Characters, Strings, and the cstring Library
Characters, C-Strings, and More About the string Class
Chapter 12: More on C-Strings and the string Class
Standard Version of Starting Out with C++, 4th Edition
Strings in C++.
Standard Version of Starting Out with C++, 4th Edition
Chapter 12: More on C-Strings and the string Class
Presentation transcript:

CS 1031 Strings in C++ The string Class Definition of Strings How to declare strings in C++: the string class Operations on strings –Concatenation, comparison operators, and [ ] Functions of the string class –length, size, empty, –insert, substr, replace, erase, clear, find Useful char functions in the C library

CS 1032 Definition of Strings Generally speaking, a string is a sequence of characters Examples: “hello”, “high school”, “H2O”. Typical desirable operations on strings are: –Concatenation: “high”+“school”=“highschool” –Comparisons: “high”<“school” // alphabetical –Finding/retrieving/modifying/deleting/inserting substrings in a given string

CS 1033 Strings in C In C, a string can be a specially terminated char array or char pointer –a char array, such as char str[ ]=“high”; –a char pointer, such as char *p = “high”; If a char array, the last element of the array must be equal to ‘\0’, signaling the end For example, the above str[] is really of length 5: str[0]=‘h’ str[1]=‘i’ str[2]=‘g’ str[3]=‘h’ str[4]=‘\0’ The same array could’ve been declared as: –char str[5] = {‘h’,’i’, ‘g’,’h’,’\0’}; If you write char str[4] = {‘h’,’i’, ‘g’,’h’};, then str is an array of chars but not a string. In char *p=“high”; the system allocates memory of 5 characters long, stores “high” in the first 4, and ‘\0’ in the 5 th.

CS 1034 The string Class in C++ C++ has a library Include it in your programs when you wish to use strings: #include In this library, a class string is defined and implemented It is very convenient and makes string processing easier than in C

CS 1035 Declaration of strings The following instructions are all equivalent. They declare x to be an object of type string, and assign the string “high school” to it: –string x(“high school”); –string x= “high school”; –string x; x=“high school”;

CS 1036 Operations on strings (Concatenation) Let x and y be two strings To concatenate x and y, write: x+y string x= “high”; string y= “school”; string z; z=x+y; cout<<“z=“<<z<<endl; z =z+“ was fun”; cout<<“z=“<<z<<endl; Output: z=highschool z= highschool was fun

CS 1037 Concatenation of Mixed-Style Strings In where s is of type string, –u can be  A string object, or  a C-style string (a char array or a char pointer),  a C-style char  or a double-quoted string,  or a single-quoted character. –Same with v and w. –At least u or v or w must be a string object s=u+v+w;

CS 1038 Example of Mixed-Style Concat string x= “high”; char y[]= “school”; char z[]= {‘w’,’a’,’s’,’\0’}; char *p = “good”; string s= x+y+’ ‘+z+” very”+” “+p+’!’; cout<<“s=“<<s<<endl; cout<<“s=“+s<<endl; Output: s=highschool was very good!

CS 1039 The concat-assign Operator += Assume x is a string object. The statement x += y; is equivalent to x=x+y; where y can be a string object, a C-style string variable, a char variable, a double- quoted string, or a single-quoted char.

CS Comparison Operators for string Objects We can compare two strings x and y using the following operators: ==, !=,, >= The comparison is alphabetical The outcome of each comparison is: true or false The comparison works as long as at least x or y is a string object. The other string can be a string object, a C-style string variable, or a double- quoted string.

CS Example of String Comparisons string x= “high”; char y[]= “school”; char *p = “good”; If (x<y) cout<<“x<y”<<endl; If (x<“tree”) cout<<“x<tree”<,endl; If (“low” != x) cout<<“low != x”<<endl; if( (p>x) cout x”<<endl; Else cout<<“p<=x”<<endl; Output: x<y x<tree low != x p>x

CS The Index Operator [] If x is a string object, and you wish to obtain the value of the k-th character in the string, you write: x[k]; This feature makes string objects appear like arrays of chars. string x= “high”; char c=x[0]; // c is ‘h’ c=x[1]; // c is ‘i’ c=x[2]; // c is g

CS Getting a string Object Length & Checking for Emptiness To obtain the length of a string object x, call the method length() or size(): To check of x is empty (that is, has no characters in it): int len=x.length( ); --or-- int len=x.size( ); bool x.empty();

CS Obtaining Substrings of Strings Logically, a substring of a string x is a subsequence of consecutive characters in x For example, “rod” is a substring of “product” If x is a string object, and we want the substring that begins at position pos and has len characters (where pos and len are of type int), write: The default value of len is x.length( ) The default value for pos is 0 string y = x.substr(pos,len); string y = x.substr(pos);//x[pos..end-1]

CS Inserting a String Inside Another Suppose x is a string object, and let y be another string to be inserted at position pos of the string of x To insert y, do: The argument y can be: a string object, a C- style string variable, or a double-quoted string x.insert(pos,y);

CS Replacing a Substring by Another Suppose x is a string object, and suppose you want to replace the characters in the range [pos,pos+len) in x by a string y. To do so, write: The argument y can be: a string object, a C- style string variable, or a double-quoted string x.replace(pos,len,y);

CS Deleting (Erasing) a Substring of a string Object Suppose x is a string object, and suppose you want to delete/erase the characters in the range [pos,pos+len) in x. To do so, write: The default value of len is the x.length( ) The default value for pos is 0 To erase the whole string of x, do: x.erase(pos,len); x.clear( ); x.erase(pos); // erases x[pos..end-1]

CS Searching for (and Finding) Patterns in Strings Suppose x is a string object, and suppose you want to search for a string y in x. To do so, write: This method returns the starting index of the leftmost occurrence of y in x, if any occurrence exits; otherwise, the method returns the length of x. To search starting from a position pos, do int startLoc = x.find(y); int startLoc = x.find(y, pos);

CS Searching for Patterns (Contd.) To search for the rightmost occurrence of y in x, do In all the versions of find and rfind, the argument y can be a string object, a C-style string variable, double-quoted string, a char variable, or a single-quoted char. startLoc = x.rfind(y); // or startLoc = x.rfind(y, pos);

CS An Example string int colonPos=x.find(‘:’); string prefix=x.substr(0,colonPos); //=FROM string suffix = x. substr(colonPos+1); cout<<“-This message is from ”<<suffix<<endl; Output: -This message is from

CS Another Example #include // this code segment reads lines from an input file and // appends them to a string object called body. It does // so until it sees a line equal to ########## ifstream in(“inputFileName.txt”); string body; char line[1000]; while(in.getline(line,1000)){ //puts in line the next line w/o \n string lineString (line); if (lineString != "##########") body += lineString +'\n';// appends line to body else break;// exits the while loop }

CS Trimming Leading & Trailing Spaces // this function removes leading and trailing spaces from x void trim (string& x){ int k = 0; // k will procced to the first non-blank char while(k<x.size() &&(x[k]==' ' || x[k]=='\t' || x[k]=='\n')) k++; x. erase(0,k); int s=x.size(); // s will move backward to the rightmost non-blank char while(s>0 &&(x[s-1]==' ' || x[s-1]=='\t' || x[s-1]=='\n')) s--; x.erase(s); }

CS What if You Want to Use C-Style Strings You can! C has a library which provides several string processing functions Some of the more commonly used functions in that library are presented in the next two slides In those functions, most of the arguments are of type char *str. That can be replaced by char str[];

CS C Library for String Operations char *strcpy(char *dst, char *src); –Copies the string src to string dest char *strncpy(char *dst, char *src, int n); –Copies the first n characters of src to dest char * strcat(*dst, char *src); –Concatenate src to the end of dst. char * strcat(*dst, char *src, int n); –Concatenate first n chars of src to end of dst.

CS int strcmp(char *str1, char *str2); –Returns 0 if str1=str2, negative if str1 str2 int strncmp(char *str1, char *str2, int n); –Same as strcmp except it considers the first n chars of each string int strlen(char *str); // returns the length of str char * strchr (char *str, int c); –Returns a char pointer to the 1 st occurrence of character c in str, or NULL otherwise. char * strstr (char *str, char *pat); –Returns a char pointer to the 1 st occurrence of string pat in str, or NULL otherwise. Plus some other commands Remarks: – in strcpy, strncpy, strcat, and strncat, make sure that the dst string has enough space to accommodate the string copied or cancatenated to it –If the strings are arrays, also make sure that the array dst is large enough to to accommodate the string copied or cancatenated to it

CS Correspondence between the C library and the C++ string Class C Library FunctionsC++ string operators/methods strcpy= (the assignment operator) strcat+= (assign+concat operator) strcmp= =, !=,, = strchr, strstr strrchr.find( ) method.rfind( ) method strlen.size( ) or.length( ) methods

CS Char Functions in C (and C++) The library in C provides useful functions for single char variables The next slide gives the most common char functions. Although the input argument appears to be of type int, it is actually a char.

CS int isalnum(int c); //non-zero iff c is alphanumeric int isalpha(int c); //non-zero iff c is alphabetic int isdigit(int c); //non-zero iff c a digit: 0 to 9 int islower(int c); //non-zero iff c is lower case int ispunct(int c); //non-zero iff c is punctuation int isspace(int c); //non-zero iff c is a space char int isupper(int c); // non-zero iff c is upper case int isxdigit(int c); //non-zero iff c is hexadecimal int tolower(int c); //returns c in lower case int toupper(int c); //returns c in upper case

CS An example of Using char Functions //PRECONDITION: str a string object //POSTCONDITION: every lower-case alphabetical letter //in str is replaced by its upper-case counterpart void toupper(string& str){ for(int i=0;i<str.size();i++){ char c=str[i]; if (islower(c)){ char C = toupper(c); string strC; strC=C; str.replace(i,1,strC); }