Let us dive into part four of our lesson on pointers and strings. You can revise the previous three parts here, here and here.
Fundamentals of Characters and Strings
•
Character constant
–
Integer value represented as character in single
quotes
–
'z' is integer value of z
•
122 in ASCII
•
String
–
Series of characters treated as single unit
–
Can include letters, digits, special
characters +, -, *
...
–
String literal (string constants)
•
Enclosed in double quotes, for example:
"I
like C++"
–
Array of characters, ends with null character '\0'
–
String is constant pointer
•
Pointer to string’s first character
–
Like arrays
•
String assignment
–
Character array
•
char color[] = "blue";
–
Creates 5 element char array color
–
last element is '\0'
–
Variable of type char *
•
char *colorPtr = "blue";
–
Creates pointer colorPtr to letter b
in string “blue”
–
“blue” somewhere in memory
–
Alternative for character array
•
char color[] = { ‘b’, ‘l’, ‘u’, ‘e’, ‘\0’ };
•
Reading strings
–
Assign input to character array word[ 20 ]
cin >> word
•
Reads characters until whitespace or EOF
•
String could exceed array size
cin
>> setw( 20 ) >> word;
•
Reads 19 characters (space reserved for '\0')
•
cin.getline
•
Read line of text
•
cin.getline( array, size, delimiter );
•
Copies input into specified array until
either
•
One less than size is reached
•
delimiter character is input
•
Example
char sentence[ 80
];
cin.getline(
sentence, 80, '\n' );
String Manipulation Functions of String-handling Library
•
String handling library <cstring>
provides functions to
–
Manipulate string data
–
Compare strings
–
Search strings for characters and other strings
–
Tokenize strings (separate strings into logical
pieces)
•
Copying strings
–
char *strcpy( char *s1, const char *s2 )
•
Copies second argument into first argument
•
First argument must be large enough to store
string and terminating null character
–
char *strncpy( char *s1, const char *s2, size_t n )
•
Specifies number of characters to be copied from
string into array
•
Does not necessarily copy terminating null
character
•
Concatenating strings
–
char *strcat( char *s1, const char *s2 )
•
Appends second argument to first argument
•
First character of second argument replaces null
character terminating first argument
•
Ensure first argument large enough to store
concatenated result and null character
–
char *strncat( char *s1, const char *s2, size_t n )
•
Appends specified number of characters from
second argument to first argument
•
Appends terminating null character to result
•
Comparing strings
–
Characters represented as numeric codes
•
Strings compared using numeric codes
–
Character codes / character sets
•
ASCII
•
“American Standard Code for Information Interchange”
•
EBCDIC
•
“Extended Binary Coded Decimal Interchange Code”
•
Comparing strings
–
int strcmp( const char *s1, const char *s2 )
•
Compares character by character
•
Returns
–
Zero if strings equal
–
Negative value if first string less than second
string
–
Positive value if first string greater than
second string
–
int strncmp( const char *s1,
const char *s2, size_t n )
•
Compares up to specified number of characters
•
Stops comparing if reaches null character in one
of arguments
•
Tokenizing
•
Breaking strings into tokens, separated by
delimiting characters
•
Tokens usually logical units, such as words
(separated by spaces)
•
"This is my string" has 4 word tokens (separated by spaces)
•
char *strtok( char *s1, const char *s2 )
•
Multiple calls required
•
First call contains two arguments, string to be
tokenized and string containing delimiting characters
•
Finds next delimiting character and replaces
with null character
•
Subsequent calls continue tokenizing
•
Call with first argument NULL
•
Determining string lengths
•
size_t strlen( const char *s )
•
Returns number of characters in string
•
Terminating null character not included in
length
Post a Comment