字符串操作库函数
详细说明
- char * strchr(const char * str,int c); 寻找字符c在字符串str中第一次出现的位置。如果找到,就返回指向该位置的char*指 针;如果str中不包含字符c,则返回NULL
- char * strstr(const char * str, const char * subStr); 寻找子串subStr在str中第一次出现的位置。如果找到,就返回指向该位置的指针;如 果str不包含字符串subStr,则返回NULL
- int stricmp(const char * s1,const char * s2); 大小写无关的字符串比较。如果s1小于s2则返回负数;如果s1等于s2,返回0;s1大 于s2,返回正数。不同编译器编译出来的程序,执行stricmp的结果就可能不同。
- int strncmp(const char * s1,const char * s2,int n); 比较s1前n个字符组成的子串和s2前n个字符组成的子串的大小。若长度不足n,则取 整个串作为子串。返回值和strcmp类似。
- char * strncpy(char * dest, const char * src,int n); 拷贝src的前n个字符到dest。如果src长度大于或等于n,该函数不会自动往dest中写 入‘\0’;若src长度不足n,则拷贝src的全部内容以及结尾的‘\0’到dest。
- char * strtok(char * str, const char * delim); 连续调用该函数若干次,可以做到:从str中逐个抽取出被字符串delim中的字符分隔 开的若干个子串。
- int atoi(char *s); 将字符串s里的内容转换成一个整型数返回。比如,如果字符串s的内容是“1234”,那 么函数返回值就是1234。如果s格式不是一个整数,比如是"a12",那么返回0。
- double atof(char *s); 将字符串s中的内容转换成实数返回。比如,"12.34"就会转换成12.34。如果s的格式 不是一个实数 ,则返回0。
- char *itoa(int value, char *string, int radix); 将整型值value以radix进制表示法写入 string:
char szValue[20];
itoa( 27,szValue,10); //使得szValue的内容变为 "27"
itoa( 27,szValue,16); //使得szValue的内容变为"1b"
代码实现
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char s1[100] = "12345";
char s2[100] = "abcdefg";
char s3[100] = "ABCDE";
strncat(s1,s2,3); // s1 = "12345abc"
cout << "1) " << s1 << endl; //输出 1) 12345abc
strncpy(s1,s3,3); // s3的前三个字符拷贝到s1,s1="ABC45abc"
cout << "2) " << s1 << endl; //输出 2) ABC45abc
strncpy(s2,s3,6); // s2 = "ABCDE"
cout << "3) " << s2 << endl; //输出 3) ABCDE
cout << "4) " << strncmp(s1,s3,3) << endl;
//比较s1和s3的前三个字符,比较结果是相等,输出 4) 0
char * p = strchr(s1,'B'); //在s1中查找 'B'第一次出现的位置
if( p ) // 等价于 if( p!= NULL)
cout << "5) " << p - s1 <<"," << *p << endl; //输出 5) 1,B
else
cout << "5) Not Found" << endl;
p = strstr( s1,"45a"); //在s1中查找字串 "45a"。s1="ABC45abc"
if( p )
cout << "6) " << p - s1 << "," << p << endl; //输出 6) 3,45abc
else
cout << "6) Not Found" << endl;
//以下演示strtok用法:
cout << "strtok usage demo:" << endl;
char str[] ="- This, a sample string, OK.";
//下面要从str逐个抽取出被" ,.-"这几个字符分隔的字串
p = strtok (str," ,.-"); //请注意," ,.-"中的第一个字符是空格
while ( p != NULL) { //只要p不为NULL,就说明找到了一个子串
cout << p << endl;
p = strtok(NULL, " ,.-"); //后续调用,第一个参数必须是NULL } return 0;
}
return 0;
}
内存操作库函数
头文件cstring中声明:
- void * memset(void * dest,int ch,int n);
将从dest开始的n个字节,都设置成ch。返回值是dest。ch只有最低的字节起 作用。
- void * memcpy(void * dest, void * src, int n);
将地址src开始的n个字节,拷贝到地址dest。返回值是dest。
版权声明:本文为qq_41668789原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。