1 / 58

Chapter 10 – Characters, Strings, and the string Class

Chapter 10 – Characters, Strings, and the string Class. 10.1 Character Testing. The C++ library provides several macros for testing characters. Be sure to include ctype.h header file. Table 10-1. Program 10-1. // This program demonstrates some of the character testing // functions .

Download Presentation

Chapter 10 – Characters, Strings, and the string Class

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 10 – Characters, Strings, and the string Class

  2. 10.1 Character Testing • The C++ library provides several macros for testing characters. • Be sure to include ctype.h header file

  3. Table 10-1

  4. Program 10-1 // This program demonstrates some of the character testing // functions. #include <iostream.h> #include <ctype.h> void main(void) { char input; cout << "Enter any character: "; cin.get(input); cout << "The character you entered is: " << input << endl; cout << "Its ASCII code is: " << int(input) << endl;

  5. Program continues if (isalpha(input)) cout << "That's an alphabetic character.\n"; if (isdigit(input)) cout << "That's a numeric digit.\n"; if (islower(input)) cout << "The letter you entered is lowercase.\n"; if (isupper(input)) cout << "The letter you entered is uppercase.\n"; if (isspace(input)) cout << "That's a whitespace character.\n"; }

  6. Program Output With Example input Enter any character: A [Enter] The character you entered is: A Its ASCII code is: 65 That's an alphabetic character. The letter you entered is uppercase. Program Output With Other Example input Enter any character: 7 [Enter] The character you entered is: 7 Its ASCII code is: 55 That's a numeric digit.

  7. Program 10-2 // This program tests a customer number to determine if it is // in the proper format. #include <iostream.h> #include <ctype.h> // Function prototype bool testNum(char []); void main(void) { char customer[8]; cout << "Enter a customer number in the form "; cout << "LLLNNNN\n"; cout << "(LLL = letters and NNNN = numbers): "; cin.getline(customer, 8);

  8. Program continues if (testNum(customer)) cout << "That's a valid customer number.\n"; else { cout << "That is not the proper format of the "; cout << "customer number.\nHere is an example:\n"; cout << " ABC1234\n"; } } // Definition of function testNum. bool testNum(char custNum[]) { // Test the first three characters for alphabetic letters for (int count = 0; count < 3; count++) {

  9. Program continues if (!isalpha(custNum[count])) return false; } // Test the last 4 characters for numeric digits for (int count = 3; count < 7; count++) { if (!isdigit(custNum[count])) return false; } return true; }

  10. Program Output With Example input Enter a customer number in the form LLLNNNN (LLL = letters and NNNN = numbers): RQS4567 [Enter] That's a valid customer number. Program Output With Other Example input Enter a customer number in the form LLLNNNN (LLL = letters and NNNN = numbers): AX467T9 [Enter] That is not the proper format of the customer number. Here is an example: ABC1234

  11. 10.2 Character Case Conversion • The C++ library offers functions for converting a character to upper or lower case. • Be sure to include ctype.h header file

  12. Table 10-2

  13. Program 10-3 // This program calculates the area of a circle.It asks the // userif he or she wishes to continue. A loop that // demonstrates thetoupper function repeats until the user // enters 'y', 'Y','n', or 'N'. #include <iostream.h> #include <ctype.h> void main(void) { const float pi = 3.14159; float radius; char go; cout << "This program calculates the area of a circle.\n"; cout.precision(2); cout.setf(ios::fixed);

  14. Program continues do { cout << "Enter the circle's radius: "; cin >> radius; cout << "The area is " << (pi * radius * radius); cout << endl; do { cout << "Calculate another? (Y or N) "; cin >> go; } while (toupper(go) != 'Y' && toupper(go) != 'N'); } while (toupper(go) == 'Y'); }

  15. Program Output With Example input This program calculates the area of a circle. Enter the circle's radius: 10 [Enter] The area is 314.16 Calculate another? (Y or N)b Enter] Calculate another? (Y or N)y [Enter] Enter the circle's radius:1 [Enter] The area is 3.14 Calculate another? (Y or N) n [Enter]

  16. 10.3 Review of the Internal Storage of C-strings • A C-string is a sequence of characters stored in consecutive memory locations, terminated by a null character. Figure 10-1

  17. Program 10-4 // This program contains string constants #include <iostream.h> void main(void) { char again; do { cout << "C++ programming is great fun!" << endl; cout << "Do you want to see the message again? "; cin >> again; } while (again == 'Y' || again == 'y'); }

  18. Program 10-5 // This program cycles through a character array, displaying // each element until a null terminator is encountered. #include <iostream.h> void main(void) { char line[80]; int count = 0; cout << "Enter a sentence of no more than 79 characters:\n"; cin.getline(line, 80); cout << "The sentence you entered is:\n"; while (line[count] != '\0') { cout << line[count]; count++; } }

  19. Program Output with Example input Enter a sentence of no more than 79 characters: C++ is challenging but fun! [Enter] The sentence you entered is: C++ is challenging but fun!

  20. 10.4 Library Functions for Working with C-strings • The C++ library has numerous functions for handling C-strings These functions perform various tests and manipulations. • Functions discussed in this section require the inclusion of string.h header file

  21. Figure 10-2

  22. Table 10-3

  23. Program 10-6 // This program uses the strstr function to search an array // of strings for a name. #include <iostream.h> #include <string.h> // For strstr void main(void) { char prods[5][27] = {"TV327 31 inch Television", "CD257 CD Player", "TA677 Answering Machine", "CS109 Car Stereo", "PC955 Personal Computer"}; char lookUp[27], *strPtr = NULL; int index;

  24. Program continues cout << "\tProduct Database\n\n"; cout << "Enter a product number to search for: "; cin.getline(lookUp, 27); for (index = 0; index < 5; index++) { strPtr = strstr(prods[index], lookUp); if (strPtr != NULL) break; } if (strPtr == NULL) cout << "No matching product was found.\n"; else cout << prods[index] << endl; }

  25. Program Output With Example input Product Database Enter a product to search for: CD257 [Enter] CD257 CD Player Program Output With Example input Product Database Enter a product to search for: CS [Enter] CS109 Car Stereo Program Output With Other Example input Product Database Enter a product to search for: AB [Enter] No matching product was found.

  26. 10.5 String/Numeric Conversion Functions • The C++ library provides functions for converting a C-string representation of a number to a numeric data type, and vice-versa. • The functions in this section require the stdlib.h file to be included.

  27. Table 10-4

  28. Table 10-4 Continued FunctionDescription itoa Converts an integer to a C-string. The first argument, value, is the integer. The result will be stored at the location pointed to by the second argument, string. The third argument, base, is an integer. It specifies the numbering system that the converted integer should be expressed in. ( 8 = octal, 10 = decimal, 16 = hexadecimal, etc. ) Example Usage: itoa(value, string, base)

  29. Program 10-7 // This program demonstrates the strcmp and atoi functions. #include <iostream.h> #include <string.h> // For strcmp #include <stdlib.h> // For atoi void main(void) { char input[20]; int total = 0, count = 0; float average; cout << "This program will average a series of numbers.\n"; cout << "Enter the first number or Q to quit: "; cin.getline(input, 20);

  30. Program continues while ((strcmp(input, "Q") != 0)&&(strcmp(input, "q") != 0)) { total += atoi(input); // Keep a running total count++; // Keep track of how many numbers entered cout << "Enter the next number or Q to quit: "; cin.getline(input, 20); } if (count != 0) { average = total / count; cout << "Average: " << average << endl; } }

  31. Program Output With Example input This program will average a series of numbers. Enter the first number or Q to quit: 74 [Enter] Enter the next number or Q to quit:98 [Enter] Enter the next number or Q to quit:23 [Enter] Enter the next number or Q to quit:54 [Enter] Enter the next number or Q to quit:Q [Enter] Average: 62

  32. 10.6 Focus on Software Engineering: Writing Your Own C-string-Handling Functions • You can design your own specialized functions for manipulating C-strings.

  33. Program 10-8 // This program uses a function to copy a C-string into an array. #include <iostream.h> void stringCopy(char [], char []);// Function prototype void main(void) { char first[30], second[30]; cout << "Enter a string with no more than 29 characters:\n"; cin.getline(first, 30); stringCopy(first, second); cout << "The string you entered is:\n" << second << endl; }

  34. Program continues // Definition of the stringCopy function. // This function accepts two character arrays as // arguments. The function assumes the two arrays // contain C-strings. The contents of the second array is // copied to the first array. void stringCopy(char string1[], char string2[]) { int index = 0; while (string1[index] != '\0') { string2[index] = string1[index]; index++; } string2[index] = '\0'; }

  35. Program Output With Example input Enter a string with no more than 29 characters: Thank goodness it’s Friday! [Enter] The string you entered is: Thank goodness it's Friday!

  36. Program 10-9 // This program uses the function nameSlice to "cut" the last // name off of a string that contains the user's first and // last names. #include <iostream.h> void nameSlice(char []); // Function prototype void main(void) { char name[41]; cout << "Enter your first and last names, separated "; cout << "by a space:\n"; cin.getline(name, 41); nameSlice(name); cout << "Your first name is: " << name << endl; }

  37. Program continues // Definition of function nameSlice. This function accepts a // character array as its argument. It scans the array looking // for a space. When it finds one, it replaces it with a null // terminator. void nameSlice(char userName[]) { int count = 0; while (userName[count] != ' ' && userName[count] != '\0') count++; if (userName[count] == ' ') userName[count] = '\0'; }

  38. Program Output With Example input Enter your first and last names, separated by a space: Jimmy Jones [Enter] Your first name is: Jimmy

  39. Figure 10-3

  40. Figure 10-4

  41. Using Pointers to pass C-string arguments • Very useful • Can assume string exists from address pointed to by the pointer up to the ‘\0’

  42. Program 10-10 // This program demonstrates a function, countChars, that counts // the number of times a specific character appears in a string. #include <iostream.h> // Function prototype int countChars(char *, char); void main(void) { char userString[51], letter; cout << "Enter a string (up to 50 characters): "; cin.getline(userString, 51); cout << "Enter a character and I will tell you how many\n"; cout << "times it appears in the string: "; cin >> letter; cout << letter << " appears "; cout << countChars(userString, letter) << " times.\n"; }

  43. Program continues // Definition of countChars. The parameter strPtr is a pointer // that points to a string. The parameter ch is a character that // the function searches for in the string. The function returns // the number of times the character appears in the string. int countChars(char *strPtr, char ch) { int times = 0; while (*strPtr != '\0') { if (*strPtr == ch) times++; strPtr++; } return times; }

  44. Program Output With Example input Enter a string (up to 50 characters):Starting Out With C++ [Enter] Enter a character and I will tell you how many times it appears in the string:t [Enter] t appears 4 times.

  45. The C++ string Class • Offers “ease of programming” advantages over the use of C-strings • Need to #include the string header file(Notice there is no .h extension.) • Use the following statement after the #include statements:using namespace std;

  46. Program 10-12 // This program demonstrates the C++ string class. #include <iostream> #include <string> // Required for the string class using namespace std; void main(void) { string movieTitle; string name("William Smith"); movieTitle = "Wheels of Fury"; cout << "My favorite movie is " << movieTitle << endl; } Program output My favorite movie is Wheels of Fury

  47. A note about the iostream header file • The preceding program uses the iostream header, not iostream.h. • With some compilers, you must include the iostream header instead of iostream.h when using cout and cin with string objects.

  48. Program 10-13: Using cin with a string object // This program demonstrates how cin can read a string into // a string class object. #include <iostream> #include <string> using namespace std; void main(void) { string name; cout << "What is your name? " << endl; cin >> name; cout << "Good morning " << name << endl; }

  49. Program Output With Example Input What is your name?Peggy Good morning Peggy

  50. Reading a line of input into a string class object • Use the getline function to read a line of input, with spaces, into a string object. Example code:string name;cout << “What is your name? “;getline(cin, name);

More Related