Download presentation
Presentation is loading. Please wait.
Published byLee Dennis Modified over 9 years ago
1
C-Strings Joe Meehean
2
C-style Strings String literals (e.g., “foo”) in C++ are stored as const char[] C-style strings characters (e.g., ‘f’) are stored in an array of chars last char is the NULL character ‘\0’ or just plain 0 A hold over from C sometimes still used important to know how they work 2 char ca1[] = {‘C’, ‘+’, ‘+’}; // NO char ca2[] = {‘C’, ‘+’, ‘+’, ‘\0’}; // YES const char *cp = “C++”; // compiler adds ‘\0’
3
C-style Strings Manipulated using (const) char* 3 bool contains(const char* str, char& letter){ const char* p = str; while( *p != letter && *p != NULL ){ p++; } return( *p == letter ); } cout << contains(“Java”, ‘C’) << endl;
4
C-style Strings Standard C library provides functions for C-style strings int strlen(const char *str) returns length of str, not including null-terminator int strcmp(const char *a, const char* b) returns 0 if a’s string and b’s string are identical returns > 0 if a’s string > b’s string returns < 0 if a’s string < b’s string 4
5
C-style Strings Standard C library provides functions for C-style strings char* strcat(char *destination, char* source) appends source to destination puts results into destination e.g., strcat(“foo”, “bar”) = “foobar” better have room in destination for strlen(destination) + strlen(source) + 1 characters char* strcpy(char* dest, char* source) copies source into destination better have room in destination for strlen(source) + 1 characters 5
6
C-style Strings Standard C library provides functions for C-style strings char* strncat(char *destination, char* source, int n) same as strcat, but only appends n characters safer version of strcat char* strncpy(char* dest, char* source, int n) same as strcpy, but only copies n characters safer version of strcpy 6
7
C-style Strings Always use these n versions of string copy and concatenate using strcpy and strcat causes many, many security exploits Always remember the null-terminator strlen won’t work without it can then cause strncpy & strncat to be wrong OR, even better ALWAYS use C++’s string class 7
8
Questions? 8
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.