1. 字符
1.1 字符类型库:头文件"cctype"
在头文件<cctype>(相当于 C 语言中的<ctype.h>),包含了一下字符处理函数:
| FUNCTION | EXAMPLE |
|---|---|
| int isalpha(int ch);//如果 ch 是字母,返回 1,否则 0 | |
| int isdigit(int ch);//如果 ch 是数字,返回 1,否则 0 | |
| int isalnum(int ch);//如果 ch 是字母或数字,返回 1,否则 0 | |
| int isxdigit(int ch);//如果 ch 是十六进制数字[0-9A-Fa-f],返回 1 | |
| int isupper(int ch);//如果 ch 是大写字母,返回 1 | |
| int islower(int ch);//如果 ch 是小写字母,返回 1 | |
| int toupper(int ch);//转成大写字母 | |
| int tolower(int ch);//转成小写 | |
| int isspace(int ch); | |
| int ispunct(int ch);//是否是标点符号 | |
| int iscntrl(int ch);//是否是 control | |
| int isprint(int ch);//是否是可打印字符 | |
| int isgraph(int ch);//是否图形表示 |
2. 字符串:C-String 和 string 类
回顾一下,我们知道 C++支持两种类型的字符串:
- 一种是 C 语言中的 string,定义在头文件’cstring’中(相当于 c 中的 string.h)。这种形式是将字符串表示成以
\0结束的字符数组 - 另一种是 C++中的 string 类,被定义在头文件’string’中。‘string’是一个定义了一些公共构造函数和成员函数的普通类
2.1 C-String 字面量
一个字符串字面量,例如"hello",被认为是一个以\0结束的字符数组,该数组的长度是字符串字面量长度加上结束字符的长度。
| |
2.2 C-String 头文件和函数
C-string 可以被声明为char *或char []。这是因为 C 语言把一个数组的名字当做指向数组第一个元素的指针。不同于普通数组,
在将 C-string 传递给函数的时候,不需要给出数组长度,因为可以根据终结符计算出来。
定义在头文件
| FUNCTION | EXAMPLE |
|---|---|
size_t strlen (const char * cstr); | char * msg = "Hello"; cout << strlen(msg); // length of string |
| Copying | |
char *strcpy(char *dest, const char *src); | |
char *strncpy(char *desc, char *src, size_t n); | |
| Comparison | |
int strcmp(const char *cstr1, const char *cstr2); | |
int strncmp(const char *cstr1, const char *cstr2, size_t n); | |
| Concatenation | |
char *strcat(char *dest, const char *src); | |
char *strncat(char *dest, const char *src, size_t n); | |
| Searching | |
char *strchr(char *cstr, int ch); | |
char *strrchr(char *cstr, int ch); | |
char *strstr(char *cstr1, char *cstr2); | |
size_t strspn (const char * cstr, const char * accept); | |
char * strpbrk (char * cstr, const char * accept); | |
size_t strcspn (const char * cstr, const char * reject); | |
| Tokenizing | |
char * strtok (char * cstr, const char * delim) |
定义在头文件
| FUNCTION | EXAMPLE |
|---|---|
int atoi (char * cstr) | |
double atof (char * cstr) | |
long atol (char * cstr) | |
long long atoll (char * cstr) | |
double strtod (const char * cstr, char** endptr) | |
float strtof (const char * cstr, char** endptr) | |
long strtol (const char * cstr, char** endptr) | |
long double strtold (const char * cstr, char** endptr) | |
long long strtoll (const char * cstr, char** endptr) | |
unsigned long long strtoull (const char * cstr, char** endptr) |
定义在头文件
| FUNCTION | EXAMPLE |
|---|---|
cin >> var | char *msg; cin >> msg; |
cin.getline(char * cstr, unsigned int n); cin.getline(char * cstr, unsigned int n, char delim) | char msg[256]; cin.getline(msg, 256); cin.getline(msg, 256, '\n'); |
int cin.get() Return the next character, casted as an int. | |
cin.peek() return the next character (casted as an int), but not removing it from the input stream. | |
cin.ignore(unsigned int n = 1, int delim = EOF) Remove n-1 characters from the input stream, or until delimiter is reached. |
C-string 的大小写转换
| |
2.3 C++中的 string 类
string 类定义在头文件’
| |
string 类的构造器
| |
示例:
| |
string 类中的公开函数
| |