词条 | string.h |
释义 | 版本内容(1、C、传统 C++ 2、标准 C++ 3、C99 增加) 疑问解答(1、c++中 string与string.h 的作用和区别 2、c++ <string.h>中包括哪些函数?) string.h文件中函数的详细用法(1、strcpy 2.strncpy 3、strcat 4、strchr 5、strcmp 6、strnicmp 7、strlen 8、strcspn 9、strdup 10、stricmp 11、strerror 12、strcmpi 13.strncmp 14、strncpy 15、strnicmp 16、strnset 17、strpbrk 18、strrchr 19、strrev 20、strset 21、strspn 22、strstr 23、strtod 24、strtok 25、strtol 26、strupr 27、swab) 简单介绍C语言里面关于字符数组的函数定义的头文件,常用函数有strlen、strcmp、strcpy等等,更详细的可以到include文件夹里面查看该文件。 文件资料文件名称 string.h 文件大小 1.30 MB 系统文件 否 后台执行 否 使用网络 否 硬件相关 否 常见错误 加载异常 内存使用 未知(N/A) 安全等级 0 广告软件 否 间谍软件 否 木马病毒 否 编程软件 是 函数库文件 是 函数数目 26 版本内容string.h在c语言和c++语言中都被广泛的使用,但是具体情况不是很一样。由于传统的C++脱胎于C,所以传统C++中于C语言中对本词条的用法差不多,经过美国标准化组织修改标准化后的标准C++中,定义则是大不相同。 1、C、传统 C++其中包含的引用头文件如下: #include <assert.h> //设定插入点#include <ctype.h> //字符处理 #include <errno.h> //定义错误码 #include <float.h> //浮点数处理 #include <fstream.h> //文件输入/输出 #include <iomanip.h> //参数化输入/输出 #include <iostream.h> //数据流输入/输出 #include <limits.h> //定义各种数据类型最值常量 #include <locale.h> //定义本地化函数 #include <math.h> //定义数学函数 #include <stdio.h> //定义输入/输出函数 #include <stdlib.h> //定义杂项函数及内存分配函数 #include <string.h> //字符串处理 #include <strstrea.h> //基于数组的输入/输出 #include <time.h> //定义关于时间的函数 #include <wchar.h> //宽字符处理及输入/输出 #include <wctype.h> //宽字符分类 2、标准 C++其中包括的头文件如下(同上的不再注释) #include <algorithm> //STL 通用算法 #include <bitset> //STL 位集容器 #include <cctype> #include <cerrno> #include <clocale> #include <cmath> #include <complex> //复数类 #include <cstdio> #include <cstdlib> #include <cstring> #include <ctime> #include <deque> //STL 双端队列容器 #include <exception> //异常处理类 #include <fstream> #include <functional> //STL 定义运算函数(代替运算符) #include <limits> #include <list> //STL 线性列表容器 #include <map> //STL 映射容器 #include <iomanip> #include <ios> //基本输入/输出支持 #include <iosfwd> //输入/输出系统使用的前置声明 #include <iostream> #include <istream> //基本输入流 #include <ostream> //基本输出流 #include <queue> //STL 队列容器 #include <set> //STL 集合容器 #include <sstream> //基于字符串的流 #include <stack> //STL 堆栈容器 #include <stdexcept> //标准异常类 #include <streambuf> //底层输入/输出支持 #include <string> //字符串类 #include <utility> //STL 通用模板类 #include <vector> //STL 动态数组容器 #include <cwchar> #include <cwctype> using namespace std; 3、C99 增加#include <complex.h> //复数处理 #include <fenv.h> //浮点环境 #include <inttypes.h> //整数格式转换 #include <stdbool.h> //布尔环境 #include <stdint.h> //整型环境 #include <tgmath.h> //通用类型数学宏 疑问解答1、c++中 string与string.h 的作用和区别答:一般一个C++的老的带“.h”扩展名的库文件,比如iostream.h,在新标准后的标准库中都有一个不带“.h”扩展名的相对应,区别除了后者的好多改进之外,还有一点就是后者的东东都塞进了“std”名字空间中。 但唯独string特别。 问题在于C++要兼容C的标准库,而C的标准库里碰巧也已经有一个名字叫做“string.h”的头文件,包含一些常用的C字符串处理函数。 这个头文件跟C++的string类半点关系也没有,所以 <string>并非 <string.h>的“升级版本”,他们是毫无关系的两个头文件。 2、c++ <string.h>中包括哪些函数?答:常用函数如下: strlen 求字符串长度 strcmp 比较2个字符串是否一样 strcat 字符串连接操作 strcpy 字符串拷贝操作 strstr 查询子串 string.h文件中函数的详细用法下面为string.h文件中函数的详细用法,附加实例: 1、strcpy函数名: strcpy 功 能: 拷贝一个字符串到另一个 用 法: char *strcpy(char *destin, char *source); 程序例: #include <stdio.h> #include <string.h> int main(void) { char string[10]; char *str1 = "abcdefghi"; strcpy(string, str1);printf("%s\", string); return 0; } 2.strncpy函数名:strncpy 原型:char * strncpy(char *dest, char *src, size_t n); 功能:将字符串src中最多n个字符复制到字符数组dest中(它并不像strcpy一样遇到NULL才停止复制,而是等凑够n个字符才开始复制),返回指向dest的指针。 3、strcat函数名: strcat 功 能: 字符串拼接函数 用 法: char *strcat(char *destin, char *source); 程序例: #include <string.h> #include <stdio.h> int main(void) { char destination[25]; char *blank = " ", *c = "C++", *Borland = "Borland"; strcpy(destination, Borland); strcat(destination, blank); strcat(destination, c); printf("%s\", destination); return 0; } 4、strchr函数名: strchr 功 能: 在一个串中查找给定字符的第一个匹配之处\\ 用 法: char *strchr(char *str, char c); 程序例: #include <string.h> #include <stdio.h> int main(void) { char string[15]; char *ptr, c = 'r'; strcpy(string, "This is a string"); ptr = strchr(string, c); if (ptr) printf("The character %c is at position: %d\", c, ptr-string); else printf("The character was not found\"); return 0; } 5、strcmp函数名: strcmp 功 能: 串比较 用 法: int strcmp(char *str1, char *str2); 看Asic码,str1>str2,返回值 > 0;两串相等,返回0 程序例: #include <string.h> #include <stdio.h> int main(void) { char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc"; int ptr; ptr = strcmp(buf2, buf1); if (ptr > 0) printf("buffer 2 is greater than buffer 1\"); else printf("buffer 2 is less than buffer 1\"); ptr = strcmp(buf2, buf3); if (ptr > 0) printf("buffer 2 is greater than buffer 3\"); else printf("buffer 2 is less than buffer 3\"); return 0; } 6、strnicmp函数名: strnicmp 功 能: 将一个串中的一部分与另一个串比较, 不管大小写 用 法: int strnicmp(char *str1, char *str2, unsigned maxlen); 程序例: #include <string.h> #include <stdio.h> int main(void) { char *buf1 = "BBB", *buf2 = "bbb"; int ptr; ptr = strnicmp(buf2, buf1); if (ptr > 0) printf("buffer 2 is greater than buffer 1\"); if (ptr < 0) printf("buffer 2 is less than buffer 1\"); if (ptr == 0) printf("buffer 2 equals buffer 1\"); return 0; } 7、strlen函数名:strlen 功能: strle函数求的是字符串的长度,它求得方法是从字符串的首地址开始到遇到第一个'\\0'停止计数,如果你只定义没有给它赋初值,这个结果是不定的,它会从字符串首地址一直记下去,直到遇到'\\0'才会停止。 原型: size_t strlen(conset char *s); #include<stdio.h> #include <string.h> int main() { int i=0; char *he ="Hello,world"; i=strlen(he); printf("字符串长度为%d\",i); return 0; } // 运行结果: 字符串长度为11 8、strcspn函数名: strcspn 功 能: 在串中查找第一个给定字符集内容的段 用 法: int strcspn(char *str1, char *str2); 程序例: #include <stdio.h> #include <string.h> #include <alloc.h> int main(void) { char *string1 = "1234567890"; char *string2 = "747DC8"; int length; length = strcspn(string1, string2); printf("Character where strings intersect is at position %d\", length); return 0; } 9、strdup函数名: strdup 功 能: 将串拷贝到新建的位置处 用 法: char *strdup(char *str); 程序例: #include <stdio.h> #include <string.h> #include <alloc.h> int main(void) { char *dup_str, *string = "abcde"; dup_str = strdup(string); printf("%s\", dup_str); free(dup_str); return 0; } 10、stricmp函数名:stricmp 功 能: 以大小写不敏感方式比较两个串 用 法: int stricmp(char *str1, char *str2); 程序例: #include <string.h> #include <stdio.h> int main(void) { char *buf1 = "BBB", *buf2 = "bbb"; int ptr; ptr = stricmp(buf2, buf1); if (ptr > 0) printf("buffer 2 is greater than buffer 1\"); if (ptr < 0) printf("buffer 2 is less than buffer 1\"); if (ptr == 0) printf("buffer 2 equals buffer 1\"); return 0; } 11、strerror函数名: strerror 功 能: 返回指向错误信息字符串的指针 用 法: char *strerror(int errnum); 程序例: #include <stdio.h> #include <errno.h> int main(void) { char *buffer; buffer = strerror(errno); printf("Error: %s\", buffer); return 0; } 12、strcmpi函数名: strcmpi 功 能: 将一个串与另一个比较, 不管大小写 用 法: int strcmpi(char *str1, char *str2); 程序例: #include <string.h> #include <stdio.h> int main(void) { char *buf1 = "BBB", *buf2 = "bbb"; int ptr; ptr = strcmpi(buf2, buf1); if (ptr > 0) printf("buffer 2 is greater than buffer 1\"); if (ptr < 0) printf("buffer 2 is less than buffer 1\"); if (ptr == 0) printf("buffer 2 equals buffer 1\"); return 0; } 13.strncmp函数名: strncmp 功 能: 串比较 用 法: int strncmp(char *str1, char *str2, int maxlen); 程序例: #include <string.h> #include <stdio.h> int main(void) { char *buf1 = "aaabbb", *buf2 = "bbbccc", *buf3 = "ccc"; int ptr; ptr = strncmp(buf2,buf1,3); if (ptr > 0) printf("buffer 2 is greater than buffer 1\"); else printf("buffer 2 is less than buffer 1\"); ptr = strncmp(buf2,buf3,3); if (ptr > 0) printf("buffer 2 is greater than buffer 3\"); else printf("buffer 2 is less than buffer 3\"); return(0); } 14、strncpy函数名:strncpy 功 能: 串拷贝 用 法: char *strncpy(char *destin, char *source, int maxlen); 程序例: #include <stdio.h> #include <string.h> int main(void) { char string[10]; char *str1 = "abcdefghi"; strncpy(string, str1, 3); string[3] = '\\0'; printf("%s\", string); return 0; } 15、strnicmp函数名: strnicmp 功 能: 不注重大小写地比较两个串 用 法: int strnicmp(char *str1, char *str2, unsigned maxlen); 程序例: #include <string.h> #include <stdio.h> int main(void) { char *buf1 = "BBBccc", *buf2 = "bbbccc"; int ptr; ptr = strnicmp(buf2, buf1, 3); if (ptr > 0) printf("buffer 2 is greater than buffer 1\"); if (ptr < 0) printf("buffer 2 is less than buffer 1\"); if (ptr == 0) printf("buffer 2 equals buffer 1\"); return 0; } 16、strnset函数名: strnset 功 能: 将一个字符串前n个字符都设为指定字符 用 法: char *strnset(char *str, char ch, unsigned n); 程序例: #include <stdio.h> #include <string.h> int main(void) { char *string = "abcdefghijklmnopqrstuvwxyz"; char letter = 'x'; printf("string before strnset: %s\", string); strnset(string, letter, 13); printf("string after strnset: %s\", string); return 0; } 17、strpbrk函数名: strpbrk 功 能: 在串中查找给定字符集中的字符 用 法: char *strpbrk(char *str1, char *str2); 程序例: #include <stdio.h> #include <string.h> int main(void) { char *string1 = "abcdefghijklmnopqrstuvwxyz"; char *string2 = "onm"; char *ptr; ptr = strpbrk(string1, string2); if (ptr) printf("strpbrk found first character: %c\", *ptr); else printf("strpbrk didn't find character in set\"); return 0; } 18、strrchr函数名: strrchr 功 能: 在串中查找指定字符的最后一个出现 用 法: char *strrchr(char *str, char c); 程序例: #include <string.h> #include <stdio.h> int main(void) { char string[15]; char *ptr, c = 'r'; strcpy(string, "This is a string"); ptr = strrchr(string, c); if (ptr) printf("The character %c is at position: %d\", c, ptr-string); else printf("The character was not found\"); return 0; } 19、strrev函数名: strrev 功 能: 串倒转 用 法: char *strrev(char *str); 程序例: #include <string.h> #include <stdio.h> int main(void) { char *forward = "string"; printf("Before strrev(): %s\", forward); strrev(forward); printf("After strrev(): %s\", forward); return 0; } 20、strset函数名: strset 功 能: 将一个串中的所有字符都设为指定字符 用 法: char *strset(char *str, char c); 程序例: #include <stdio.h> #include <string.h> int main(void) { char string[10] = "123456789"; char symbol = 'c'; printf("Before strset(): %s\", string); strset(string, symbol); printf("After strset(): %s\", string); return 0; } 21、strspn函数名:strspn 功 能: 在串中查找指定字符集的子集的第一次出现 用 法: int strspn(char *str1, char *str2); 程序例: #include <stdio.h> #include <string.h> #include <alloc.h> int main(void) { char *string1 = "1234567890"; char *string2 = "123DC8"; int length; length = strspn(string1, string2); printf("Character where strings differ is at position %d\", length); return 0; } 22、strstr函数名: strstr 功 能: 在串中查找指定字符串的第一次出现 用 法: char *strstr(char *str1, char *str2); 程序例: #include <stdio.h> #include <string.h> int main(void) { char *str1 = "Borland International", *str2 = "nation", *ptr; ptr = strstr(str1, str2); printf("The substring is: %s\", ptr); return 0; } 23、strtod函数名: strtod 功 能: 将字符串转换为double型值 用 法: double strtod(char *str, char **endptr); 程序例: #include <stdio.h> #include <stdlib.h> int main(void) { char input[80], *endptr; double value; printf("Enter a floating point number:"); gets(input); value = strtod(input, &endptr); printf("The string is %s the number is %lf\", input, value); return 0; } 24、strtok函数名: strtok 功 能: 查找由在第二个串中指定的分界符分隔开的单词 用 法: char *strtok(char *str1, char *str2); 程序例: #include <string.h> #include <stdio.h> int main(void) { char input[16] = "abc,d"; char *p; /* strtok places a NULL terminator in front of the token, if found */ p = strtok(input, ","); if (p) printf("%s\", p); /* A second call to strtok using a NULL as the first parameter returns a pointer to the character following the token */ p = strtok(NULL, ","); if (p) printf("%s\", p); return 0; } 25、strtol函数名: strtol 功 能: 将串转换为长整数 用 法: long strtol(char *str, char **endptr, int base); 程序例: #include <stdlib.h> #include <stdio.h> int main(void) { char *string = "87654321", *endptr; long lnumber; /* strtol converts string to long integer */ lnumber = strtol(string, &endptr, 10); printf("string = %s long = %ld\", string, lnumber); return 0; } 26、strupr函数名:strupr 功 能: 将串中的小写字母转换为大写字母 用 法: char *strupr(char *str); 程序例: #include <stdio.h> #include <string.h> int main(void) { char string[ ] = "abcdefghijklmnopqrstuvwxyz", *ptr;//定义为数组才能修改 /* converts string to upper case characters */ ptr = strupr(string); printf("%s\", ptr); return 0; } 27、swab函数名: swab 功 能: 交换字节 用 法: void swab (char *from, char *to, int nbytes); 程序例: #include <stdlib.h> #include <stdio.h> #include <string.h> char source[15] = "rFna koBlrna d"; char target[15]; int main(void) { swab(source, target, strlen(source)); printf("This is target: %s\", target); return 0; 原型:extern char *strstr(char *haystack, char *needle); *所在头文件:#include <string.h> *功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。 *说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。