csc 270 – survey of programming languages c++ lecture 2 – strings credited to dr. robert...
TRANSCRIPT
![Page 1: CSC 270 – Survey of Programming Languages C++ Lecture 2 – Strings Credited to Dr. Robert Siegfried](https://reader036.vdocuments.mx/reader036/viewer/2022082821/5697bfd51a28abf838cad549/html5/thumbnails/1.jpg)
CSC 270 – Survey of Programming Languages
C++ Lecture 2 – Strings
Credited to Dr. Robert Siegfried
![Page 2: CSC 270 – Survey of Programming Languages C++ Lecture 2 – Strings Credited to Dr. Robert Siegfried](https://reader036.vdocuments.mx/reader036/viewer/2022082821/5697bfd51a28abf838cad549/html5/thumbnails/2.jpg)
Goals
• Standard string vs cstring• cstring functions• std::string member methods• Functions that use std::string• cin / cout / character manipulation• getline vs cin
![Page 3: CSC 270 – Survey of Programming Languages C++ Lecture 2 – Strings Credited to Dr. Robert Siegfried](https://reader036.vdocuments.mx/reader036/viewer/2022082821/5697bfd51a28abf838cad549/html5/thumbnails/3.jpg)
Standard String and C Style String
• http://www.tutorialspoint.com/cplusplus/cpp_strings.htm• Declare and initialize:
– char cstring[100];– char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};– char a[] = "text";
• #include <cstring>• #include <cctype>
![Page 4: CSC 270 – Survey of Programming Languages C++ Lecture 2 – Strings Credited to Dr. Robert Siegfried](https://reader036.vdocuments.mx/reader036/viewer/2022082821/5697bfd51a28abf838cad549/html5/thumbnails/4.jpg)
Predefined Functions in <cstring>
Function Description Caution
strcpy(s, t) Copies t into s No bounds checking
strncpy(s, t, n) Copies t into s but no more than n characters are copies
Not implemented in all versions of c++
strcat(s, t) Concatenates t to the end of s No bounds checking
strncat(s, t, n) Concatenates t to the end of s but no more than n characters
Not implemented in all versions of c++
strlen(s) Returns the length of s (not counting ‘\0’)
strcmp(s, t) Returns 0 if s == t < 0 if s < t > 0 if s > t
No bounds checking
strncmp(s, t, n) Same as strcmp but compares no more than n characters
Not implemented in all versions of c++
![Page 5: CSC 270 – Survey of Programming Languages C++ Lecture 2 – Strings Credited to Dr. Robert Siegfried](https://reader036.vdocuments.mx/reader036/viewer/2022082821/5697bfd51a28abf838cad549/html5/thumbnails/5.jpg)
Functions in <cctype>
Function Description Example
toupper(c) Returns the upper case version of the character
c = toupper(‘a’);
tolower(c) Returns the lower case version of the character
c = tolower(‘A’);
isupper(c) Returns true if c is an upper case letter
if (isupper(c)) cout << ‘upper case’;
islower(c) Returns true if c is an lower case letter
if (islower(c)) cout << ‘lower case’;
isalpha(c) Returns true if c is a letter if (isalpha(c)) cout << “it’s a letter”;
isdigit(c) Returns true if c is a digit (0 through 9)
if (isalpha(c)) cout << “it’s a number”;
![Page 6: CSC 270 – Survey of Programming Languages C++ Lecture 2 – Strings Credited to Dr. Robert Siegfried](https://reader036.vdocuments.mx/reader036/viewer/2022082821/5697bfd51a28abf838cad549/html5/thumbnails/6.jpg)
Functions in <cctype> (continued)Function Description Example
isalnum(c) Returns true if c is alphanumeric
if (isalnum(‘3’)) cout << “alphanumeric”;
isspace(c) Returns true if c is a white space character
while (isspace(c)) cin.get(c);
ispunct(c) Returns true if c is a printable character other than number, letter or white space
if (ispunct(c)) cout << “punctuation”;
isprint(c) Returns true if c is a printable character
isgraph(c) Returns true if c is a printable character other an white space
isctrl(c) Returns true if c is a control character
![Page 7: CSC 270 – Survey of Programming Languages C++ Lecture 2 – Strings Credited to Dr. Robert Siegfried](https://reader036.vdocuments.mx/reader036/viewer/2022082821/5697bfd51a28abf838cad549/html5/thumbnails/7.jpg)
Standard String• std::string• include <string> or using namespace std • http://en.cppreference.com/w/cpp/header
– = assigns and + concatenates and == tests– 2 ways to create
• string str = "a string" • string str("a string")
– str.length – returns length as a property– str[#] – lets you get straight to character index as though it were an array (no
protection on out of bounds)– str.at(#) – returns character in str at I (does have bounds checking) – str.substr(position, length); - returns substring– str.insert(position, str2); put str2 into str starting at position– str.replace(position, length to be replaced, replacement string)– str.find(str1, position) –returns index of str1 in str (position optional)– str.c_str() – returns a cstring– Helpful: getline(cin, str) : std::getline (std::cin,name); - input up to, not including
null from cin to str
![Page 8: CSC 270 – Survey of Programming Languages C++ Lecture 2 – Strings Credited to Dr. Robert Siegfried](https://reader036.vdocuments.mx/reader036/viewer/2022082821/5697bfd51a28abf838cad549/html5/thumbnails/8.jpg)
Palindromewget http://home.adelphi.edu/~pe16132/csc270/note/SampleCode/cplus/Palindrome.cpp• logic– ask user for string, test palindrome (isPal), report– test palindrome: make entry lowercase, remove
punctuation, and then reverse it. Is reversal = original?
– Send const string & as parms • pass by ref (no copy) • allow no change
• See string functions in use
![Page 9: CSC 270 – Survey of Programming Languages C++ Lecture 2 – Strings Credited to Dr. Robert Siegfried](https://reader036.vdocuments.mx/reader036/viewer/2022082821/5697bfd51a28abf838cad549/html5/thumbnails/9.jpg)
Member Functions of the string class
Example Remarks
Constructors
string str Default constructor – creates empty string object str
string str("string"); Creates a string object with data "string"
string str(aString); Creates a string object that is a copy of aString, (which is a string object)
Element Accessstr[i] Returns read/write reference to character in str at index
i
str.at(i) Returns read/write reference to character in str at index i
str.substr(position, length)
Return the substring of the calling object starting at position and having length characters
![Page 10: CSC 270 – Survey of Programming Languages C++ Lecture 2 – Strings Credited to Dr. Robert Siegfried](https://reader036.vdocuments.mx/reader036/viewer/2022082821/5697bfd51a28abf838cad549/html5/thumbnails/10.jpg)
Member Functions of the string class
Example Remarks
Assignment/Modifiers
string str1 = str2; Allocates space and initializes it to str1’s data, releases memory allocated to str1 and sets str1's size to that of str2.
str1 += str2; Character data of str2 is concatenated to the end of str1; the size is set appropriately
str.empty(); Returns true if str is an empty string; returns false otherwise
str1 + str2 Returns a string that has str2’s data concatenated to the end of str1’s data. The size is set appropriately
str.insert(pos, str2) Inserts str2 into str beginning at position pos
str.remove(pos, length)
Removes a substring of size length beginning at position pos
![Page 11: CSC 270 – Survey of Programming Languages C++ Lecture 2 – Strings Credited to Dr. Robert Siegfried](https://reader036.vdocuments.mx/reader036/viewer/2022082821/5697bfd51a28abf838cad549/html5/thumbnails/11.jpg)
Member Functions of the string class
Example Remarks
Comparisons
str1 == str2str1 != str2;
Compare for equality or inequality; returns a Boolean value.
str1 < str2 str1 > str2str1 >= str2 str1 <= str2;
Four comparisons. All are lexicographical comparisons
str.find(str1) Returns index of the first occurrence of str1 in str.
str.find(str1, pos) Returns index of the first occurrence of str1 in str; the search starts at position pos.
str.find_first_of(str1, pos) Returns index of the first instance of any character in str1; the search starts at position pos.
str.find_first_not_of(pos, length)
Returns index of the first instance of any character not in str1; the search starts at position pos
![Page 12: CSC 270 – Survey of Programming Languages C++ Lecture 2 – Strings Credited to Dr. Robert Siegfried](https://reader036.vdocuments.mx/reader036/viewer/2022082821/5697bfd51a28abf838cad549/html5/thumbnails/12.jpg)
Converting string objects and C-Strings
• Sample String and cstring:– char aCString[] = “This is my C-string.”;– std::string stringVariable;
• CString to String– stringVariable = aCString;– std::string stringVariable2 (aCString);– NOT: strcpy(stringVariable, aCString);
• String to CString– strcpy(aCString, stringVariable.c_str());– NOT: aCString = stringVariable;– NOT: strcpy(ACString, stringVariable);
![Page 13: CSC 270 – Survey of Programming Languages C++ Lecture 2 – Strings Credited to Dr. Robert Siegfried](https://reader036.vdocuments.mx/reader036/viewer/2022082821/5697bfd51a28abf838cad549/html5/thumbnails/13.jpg)
C-String: Input and Output
• In addition to cin >> and cout << , there are other input and output methods available when working with strings:– getline()-- up to, not incl new lineone char: – get()-- get one char in– put() -- put one char out– putback () -- put one char back to input – peek() -- look one char aheadmany char:– ignore() -- ignore # of char until match
![Page 14: CSC 270 – Survey of Programming Languages C++ Lecture 2 – Strings Credited to Dr. Robert Siegfried](https://reader036.vdocuments.mx/reader036/viewer/2022082821/5697bfd51a28abf838cad549/html5/thumbnails/14.jpg)
more Versions of getline
• getline(cin, line); will read until the newline character.
• getline(cin, line, '?'); will read until the '?'.
• getline(cin, s1) >> s2;will read a line of characters into s1 and then store the next string (up to the next whitespace) in s2.
![Page 15: CSC 270 – Survey of Programming Languages C++ Lecture 2 – Strings Credited to Dr. Robert Siegfried](https://reader036.vdocuments.mx/reader036/viewer/2022082821/5697bfd51a28abf838cad549/html5/thumbnails/15.jpg)
Summary
• Standard string vs cstring• cstring functions• std::string member methods• Functions that use std::string• cin / cout / character manipulation• getline vs cin