知识内容:
1.C\C++字符串简述
2.C字符串相关操作
3.C++ string类相关操作
一、C\C++字符串简述
1.C语言字符串
C语言字符串是字符的数组。单字节字符串顺序存放各个字符串,并用'\0'来表示字符串结束。在C语言库函数中,有一系列针对字符串的处理函数,比如说strcpy()、sprintf()、stoi()等,只能用于单字节字符串,当然也有一些函数用于处理Unicode字符串,比如wcscpy()、swprintf()等
1 //C语言字符串示例 2 3 #include<stdio.h> 4 5 int main() 6 { 7 char s1[20]; 8 scanf("%s", s1); 9 printf("%s\n", s1); 10 11 char s2[] = "Hello, World!"; 12 printf("%s\n", s2); 13 14 return 0; 15 }
一般遍历C语言字符串有两种方式,一种是根据字符串的大小遍历,另一种是使用指针来遍历字符串,个人推荐使用根据字符串大小来遍历字符串,这样更稳妥。
1 //C语言字符串遍历示例 - 遍历输出字符串所有字符 2 #include<stdio.h> 3 #include<string.h> //strlen()的头文件 4 5 int main() 6 { 7 char s[] = "Hello, World!"; 8 //根据字符串的大小遍历 9 int i; 10 for(i=0;i<strlen(s);i++) 11 printf("%c", s[i]); 12 printf("\n"); 13 14 return 0; 15 }
2.C++的string类综述
STL的C++标准程序库中的string类,使用时不必担心内存是否充足、字符串长度等问题,并且C++中的string类作为一个类,其中集成的操作函数(方法)足以完成多数情况下的程序需求,比如说string对象可以用"="进行赋值,使用"=="进行等值比较,使用"+"进行串联。
如果要使用C++的string类必须包含头文件,并引入命名空间:
1 #include <string> 2 using namespace std;
string对象的输入方式: cin\getline
1 #include <iostream> 2 #include <string> 3 4 int main() 5 { 6 string s1, s2; 7 cin >> s1; 8 getline(cin, s2); 9 10 return 0; 11 }
二、C字符串相关操作
对于C语言的字符串,有以下这些库函数:
|
atof() |
将字符串转换成浮点数 |
|
atoi() |
将字符串转换成整数 |
|
atol() |
将字符串转换成长整型数 |
|
isalnum() |
当字母或数字字符时, 返回真值 |
|
isalpha() |
当字母字符时, 返回真值 |
|
iscntrl() |
当控制字符时, 返回真值 |
|
isdigit() |
当数字字符时, 返回真值 |
|
isgraph() |
当非空格可打印字符时, 返回真值 |
|
islower() |
当小写字母字符时, 返回真值 |
|
isprint() |
当可打印字符时, 返回真值 |
|
ispunct() |
当标点字符时, 返回真值 |
|
isspace() |
当空格字符时, 返回真值 |
|
isupper() |
当大写字母字符时, 返回真值 |
|
isxdigit() |
当十六进制字符时, 返回真值 |
|
memchr() |
在某一内存范围中查找一特定字符 |
|
memcmp() |
比较内存内容 |
|
memcpy() |
拷贝内存内容 |
|
memmove() |
拷贝内存内容 |
|
memset() |
将一段内存空间填入某值 |
|
strcat() |
连接两个字符串 |
|
strchr() |
查找某字符在字符串中首次出现的位置 |
|
strcmp() |
比较两个字符串 |
|
strcoll() |
采用目前区域的字符排列次序来比较字符串 |
|
strcpy() |
拷贝字符串 |
|
strcspn() |
在某字符串中匹配指定字符串 |
|
strerror() |
返回错误码对应的文本信息 |
|
strlen() |
返回指定字符串的长度 |
|
strncat() |
连接某一长度的两个字符串 |
|
strncmp() |
比较某一长度的两个字符串 |
|
strncpy() |
复制某一长度的一个字符串到另一字符串中 |
|
strpbrk() |
查找某字符串在另一字符串中首次出现的位置 |
|
strrchr() |
查找某字符在字符串中末次出现的位置 |
|
strspn() |
返回子串的长度,子串的字符都出现包含于另一字符串中 |
|
strstr() |
在一字符串中查找指定的子串首次出现的位置 |
|
strtod() |
将字符串转换成浮点数 |
|
strtok() |
查找指定字符之前的子串 |
|
strtol() |
将字符串转换成长整型数 |
|
strtoul() |
将字符串转换成无符号长整型数 |
|
strxfrm() |
转换子串, 可以用于字符串比较 |
|
tolower() |
将字符转换成小写字符 |
|
toupper() |
将字符转换成大写字符 |
以下是上面部分函数的详细解释:
(1)atof()
语法:
#include <stdlib.h>
double atof( const char *str );
功能:将字符串str转换成一个双精度数值并返回结果。 参数str 必须以有效数字开头,但是允许以“E”或“e”除外的任意非数字字符结尾
1 #include <stdlib.h> 2 #include <stdio.h> 3 4 int main() 5 { 6 char *s = "42.03 is the answer"; 7 double x = atof(s); 8 printf("%f", x); 9 10 return 0; 11 }
(2)atoi()
语法:
#include <stdlib.h>
int atoi(const char *str);
功能: 将字符串str转换成一个整数并返回结果。参数str以数字开头,当函数从str中读到非数字字符时则结束转换并将结果返回
1 #include <stdlib.h> 2 #include <stdio.h> 3 4 int main() 5 { 6 char *s = "32 this is the answer!"; 7 int number = atoi(s); 8 printf("%d", number); 9 10 return 0; 11 }