c/c++中与字符串处理相关的函数

void *memccpy (void *dest, const void *src, int c, size_t n);

从src所指向的对象复制n个字符到dest所指向的对象中。如果复制过程中遇到了字符c则停止复制,返回指针指向dest中字符c的下一个位置;否则返回NULL。

void *memcpy (void *dest, const void *src, size_t n);

从src所指向的对象复制n个字符到dest所指向的对象中。返回指针为dest的值。

void *memchr (const void *s, int c, size_t n);

在s所指向的对象的前n个字符中搜索字符c。如果搜索到,返回指针指向字符c第一次出现的位置;否则返回NULL。

int memcmp (const void *s1, const void *s2, size_t n);

比较s1所指向的对象和s2所指向的对象的前n个字符。返回值是s1与s2第一个不同的字符差值。

int memicmp (const void *s1, const void *s2, size_t n);

比较s1所指向的对象和s2所指向的对象的前n个字符,忽略大小写。返回值是s1与s2第一个不同的字符差值。

void *memmove (void *dest, const void *src, size_t n);

从src所指向的对象复制n个字符到dest所指向的对象中。返回指针为dest的值。不会发生内存重叠。

void *memset (void *s, int c, size_t n);

设置s所指向的对象的前n个字符为字符c。返回指针为s的值。

char *stpcpy (char *dest, const char *src);

复制字符串src到dest中。返回指针为dest + len(src)的值。

char *strcpy (char *dest, const char *src);

复制字符串src到dest中。返回指针为dest的值。

char *strcat (char *dest, const char *src);

将字符串src添加到dest尾部。返回指针为dest的值。

char *strchr (const char *s, int c);

在字符串s中搜索字符c。如果搜索到,返回指针指向字符c第一次出现的位置;否则返回NULL。

int strcmp (const char *s1, const char *s2);

比较字符串s1和字符串s2。返回值是s1与s2第一个不同的字符差值。

int stricmp (const char *s1, const char *s2);

比较字符串s1和字符串s2,忽略大小写。返回值是s1与s2第一个不同的字符差值。

size_t strcspn (const char *s1, const char *s2);

返回值是字符串s1的完全由不包含在字符串s2中的字符组成的初始串长度。

size_t strspn (const char *s1, const char *s2);

返回值是字符串s1的完全由包含在字符串s2中的字符组成的初始串长度。

char *strdup (const char *s);

得到一个字符串s的复制。返回指针指向复制后的字符串的首地址。

char *strerror(int errnum);

返回指针指向由errnum所关联的出错消息字符串的首地址。errnum的宏定义见errno.h。

size_t strlen (const char *s);

返回值是字符串s的长度。不包括结束符'/0'。

char *strlwr (char *s);

将字符串s全部转换成小写。返回指针为s的值。

char *strupr (char *s);

将字符串s全部转换成大写。返回指针为s的值。

char *strncat (char *dest, const char *src, size_t maxlen);

将字符串src添加到dest尾部,最多添加maxlen个字符。返回指针为dest的值。

int strncmp (const char *s1, const char *s2, size_t maxlen);

比较字符串s1和字符串s2,最多比较maxlen个字符。返回值是s1与s2第一个不同的字符差值。

char *strncpy (char *dest, const char *src, size_t maxlen);

复制字符串src到dest中,最多复制maxlen个字符。返回指针为dest的值。

int strnicmp(const char *s1, const char *s2, size_t maxlen);

比较字符串s1和字符串s2,忽略大小写,最多比较maxlen个字符。返回值是s1与s2第个不同的字符差值。

char *strnset (char *s, int ch, size_t n);

设置字符串s中的前n个字符全为字符c。返回指针为s的值。

char *strset (char *s, int ch);

设置字符串s中的字符全为字符c。返回指针为s的值。

char *strpbrk (const char *s1, const char *s2);

返回指针指向字符串s1中字符串s2的任意字符第一次出现的位置;如果未出现返回NULL。

char *strrchr (const char *s, int c);

在字符串s中搜索字符c。如果搜索到,返回指针指向字符c最后一次出现的位置;否则返回NULL。

char *strrev (char *s);

将字符串全部翻转,返回指针指向翻转后的字符串。

char *strstr (const char *s1, const char *s2);

在字符串s1中搜索字符串s2。如果搜索到,返回指针指向字符串s2第一次出现的位置;否则返回NULL。

char *strtok (char *s1, const char *s2);

用字符串s2中的字符做分隔符将字符串s1分割。返回指针指向分割后的字符串。第一次调用后需用NULLL替代s1作为第一个参数。

c中:

//内存分配函数

void*  malloc(size_t  size);

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 int main()
 4 {
 5     int i, n;
 6     char *buffer;
 7
 8     printf("how long do you want the string? ");
 9     scanf("%d", &i);
10
11     buffer = (char*)malloc(i+1);
12     if(buffer == NULL)  //分配堆内存失败
13         exit(1);
14          memset(buffer, 0, i+1);
15      for(n=0; n<i; n++)
16      {
17         buffer[n] = rand()%26 + 'a';
18      }
19      buffer[i] = '\0';
20
21     printf("Random string: %s\n", buffer);
22     free(buffer);
23     return 0;
24 }

//内存填充函数:

void * memset(void *dest, int c, size_t count);

 1 #include  <stdio.h>
 2 #include  <string.h>
 3 int main()
 4 {
 5             char str[]  = "almost every progreammer should know memset";
 6             memset(str,  '-',  6);
 7             puts(str);
 8
 9             return 0;
10 }
11 //输出: ------every progreammer should know memeset;                        

memcpy

原型:void * memcpy(void * destination, const void * source , size_t  num);     .//参数是指针;

 1 #include <stdio.h>
 2 #include <string.h>
 3
 4 struct {
 5     char name[40];
 6     int age;
 7 }person, person_copy;
 8
 9 int main()
10 {
11     char myname[] = "Pierre de Fermat ";
12     //using memcpy to copy string;
13     memcpy(person.name, myname, strlen(myname)+1 );
14     person.age = 46;
15
16     //using memcpy to copy structure
17     memcpy( &person_copy, &person, sizeof(person));
18
19     printf("person_copy: %s, %d \n", person_copy.name, person_copy.age );
20
21     return 0;
22 }------输出:  person_copy: Pierre de Fermat , 46 

 

 

 

//字符串中查找某个字符 函数

char * strchr(const char* ,  int );

 1 #include <stdio.h>
 2 #include <string.h>
 3
 4 int main()
 5 {
 6     char str[] = "This is a  sample ";
 7     //char ch = 's'; ----这样也可以的
 8     int ch = 's';
 9     char *pch;
10     printf("looking for the 's' character in  \"%s\" ...\n", str);
11
12     pch = strchr(str, ch);
13     while(pch != NULL)
14     {
15         printf("%s\n", pch);
16         printf("found at %d\n", pch-str+1);  //确定位置
17         pch = strchr(pch+1, 's');
18     }
19
20     return 0;
21 }输出:looking for the 's' character in  "This is a  sample " ...s is a  sample found at 4s a  sample found at 7sample found at 12

//字符串分割函数

 char *strtok(char *str1, char *str2);

str2的集合, str1 会根据这里的每个字符进行分割

 1 //调用 strtok 后, 原字符串会被修改.而且它是确定的,即截取的第一段;
 2 #include <stdio.h>
 3 #include <string.h>
 4
 5 int main()
 6 {
 7     char str[] = " this , a  sample, string";
 8     char *pch;
 9     char *psh = ",";
10
11     printf("Splitting string \"%s\" into to \n", str);
12
13     pch = strtok(str, psh);     //第一次调用, 第一参数为源串;-----参数是指针;
14     while(pch !=NULL)
15     {
16         printf("源字符串被截取之后为:%s\n", str);
17         printf("函数的返回值为:%s\n", pch);
18         pch = strtok(NULL, psh);      //第2, 3,。。。。次调用,第一个参数使用NULL
19     }
20
21     return 0;
22 }输出:Splitting string " this , a  sample, string" into to 源字符串被截取之后为: this 函数的返回值为: this 源字符串被截取之后为: this 函数的返回值为: a  sample源字符串被截取之后为: this 函数的返回值为: string

strcpy    //strncpy()

原型:char * strcpy(char * destination, const char * source );     //参数是指针;

原型: char* strncpy(char *destination, const char *source, size_t num);  //参数是指针;

 1 #include <stdio.h>
 2 #include <string.h>
 3
 4 int main()
 5 {
 6     char str1[] = "Sample string ";
 7     char str2[40];
 8     char str3[40];
 9
10     strcpy(str2, str1);
11     strcpy(str3, "copy successful ");
12
13     printf("str1: %s\n str2: %s\n str3: %s\n ", str1, str2, str3);
14
15     return 0;
16 }-----输出str1: Sample string  str2: Sample string  str3: copy successful

 

 

c++中

string::c_str()

1.string类成员函数c_str() 的原型:

   const char *c_str() const;    //返回一个以null终止的c字符串;

2.c_str()函数返回一个指向正规c字符串的指针,内容和string类的本身对象是一样的,通过string类的c_str()函数能够把string对象转换成c中的字符串的样式;

   这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。

   注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针

1 char * c;
2 string str = "12345";
3 c = str.c_str();     ////c最后指向的内容是垃圾,因为s对象被析构,其内容被处理
4
5 应该这样用:
6 char c[20];
7 string s="1234";
8 strcpy(c,s.c_str());
9 这样才不会出错,c_str()返回的是一个临时指针,不能对其进行操作
 1 #include <iostream>
 2 #include <cstring>
 3 #include <string>
 4
 5 int main()
 6 {
 7     std::string str("please split this sentense into tokens");
 8
 9     char *cstr = new char[str.length()+1];
10     std::strcpy(cstr, str.c_str());  //c_str()转为指针;
11
12     std::cout <<"cstr = "<< cstr << std::endl;
13     char *p = std::strtok(cstr, " ");
14     while(p != 0)
15     {
16         std::cout << p << '\n';
17         p = strtok(NULL, " ");
18     }
19
20     delete[] cstr;
21     return 0;
22 }

string::length     //等价于 string::size()

原型:size_t length() const;

return length of string

 1 #include <iostream>
 2 #include <string>
 3
 4 int main()
 5 {
 6     std::string str("test string ");
 7     std::cout << "the size of str is " << str.length() << "  characters. \n";
 8     std::cout << "the size of str is " << str.size() << "  characters. \n";
 9     return 0;
10 }

string::resize

原型:void resize(size_t   n);

      void resize (size_t   n,  char  c);

resize函数用来改变string的大小,如果size小于来string的size大小,则截取前size个字符,如果大于,则用c补充

 1 #include <iostream>
 2 #include <string>
 3
 4 int main()
 5 {
 6     std::string str("I like to code in  C");
 7     std::cout << str << std::endl;
 8
 9     unsigned sz = str.size();
10     std::cout << sz << std::endl;
11     std::cout << str << std::endl;
12
13     str.resize(sz+2, '+');
14     std::cout << str << std::endl;
15
16     str.resize(14);
17     std::cout << str << std::endl;
18     str.resize(24);
19     std::cout << str << std::endl;
20
21     return 0;
22 }-----输出:I like to code in  C20I like to code in  CI like to code in  C++I like to code in  C++I like to code
时间: 2024-12-26 10:22:38

c/c++中与字符串处理相关的函数的相关文章

Python中处理字符串的相关的len()方法的使用简介

  这篇文章主要介绍了Python中处理字符串的相关的len()方法的使用简介,是Python入门的基础知识,需要的朋友可以参考下 len()方法返回字符串的长度. 语法 以下是len()方法的语法: ? 1 len( str ) 参数 NA 返回值 此方法返回的字符串的长度. 例子 下面的例子显示了len()方法的使用. ? 1 2 3 4 5 #!/usr/bin/python   str = "this is string example....wow!!!";   print

php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子_php实例

一.取部份字符串. 复制代码 代码如下: string substr(string string, int start, int [length]); 本函数将字符串 string 的第 start 位起的字符串取出 length 个字符.若 start 为负数, 则从字符串尾端算起.若可省略的参数 length 存在,但为负数,则表示取到倒数第 length 个字符. 复制代码 代码如下: echo  substr ( "abcdef" ,  1 ,  3 );   // 返回 &q

WordPress主题制作中自定义头部的相关PHP函数解析_php技巧

header_image()header_image() 函数是 WordPress 自定顶部图像的标准接口函数,该函数可以自动判断后台设置,并返回字符串形式的用户自定义顶部图像地址.本文主要涉及该函数的详解及使用. [Display header image path.] 即,显示顶部图像地址. 使用 复制代码 代码如下: <img src="<?php header_image(); ?>" width="<?php echo $header_im

PHP中计算字符串相似度的函数代码_php技巧

similar_text - 计算两个字符串的相似度 int similar_text ( string $first , string $second [, float &$percent ] ) $first 必需.规定要比较的第一个字符串. $second 必需.规定要比较的第二个字符串. $percent 可选.规定供存储百分比相似度的变量名. 两个字符串的相似程度计算依据 Oliver [1993] 的描述进行.注意该实现没有使用 Oliver 虚拟码中的堆栈,但是却进行了递归调用,这

WordPress开发中自定义菜单的相关PHP函数使用简介_php技巧

函数意义wp_nav_menu () 自定义菜单显示函数 register_nav_menu () 自定义菜单注册函数 – 单数 register_nav_menus () 自定义菜单注册函数 – 复数 (很蛋疼的一个复数形式) 以下举例均用 register_nav_menus () 这个复数形式,以免混淆. 使用位置register_nav_menus () function.php 文件中,用于注册自定义菜单在后台的代码调用名称和后台显示名称. wp_nav_menu () 主题任意你想调

PHP中计算字符串相似度的函数

similar_text - 计算两个字符串的相似度 int similar_text ( string $first , string $second [, float &$percent ] ) $first 必需.规定要比较的第一个字符串. $second 必需.规定要比较的第二个字符串. $percent 可选.规定供存储百分比相似度的变量名. 两个字符串的相似程度计算依据 Oliver [1993] 的描述进行.注意该实现没有使用 Oliver 虚拟码中的堆栈,但是却进行了递归调用,这

linux中与时间处理相关的函数

  最近在查关于Linux下时间编程的问题:        1. Linux下与时间有关的结构体         struct timeval        {              int tv_sec;              int tv_usec;          };          其中tv_sec是由凌晨开始算起的秒数,tv_usec则是微秒(10E-6 second).          struct timezone        {              int

linux内核驱动中对字符串的操作【转】

转自:http://www.360doc.com/content/12/1224/10/3478092_255969530.shtml Linux内核中关于字符串的相关操作,首先包含头文件: [cpp] view plaincopyprint? #include <linux/string.h>   可用函数包括如下:lib/string.c  [cpp] view plaincopyprint? int strnicmp(const char *s1, const char *s2, siz

讲解Python中面向对象编程的相关知识

  这篇文章主要介绍了深入讲解Python中面向对象编程的相关知识,是Python入门学习中的基础知识,需要的朋友可以参考下 Python从第一天开始就是面向对象的语言.正因为如此,创建和使用类和对象是非常地容易.本章将帮助您在使用Python面向对象编程的技术方面所有提高. 如果没有任何以往面向对象(OO)的编程的经验,那么可能要了解一些基本的入门课程就可以了,或者至少某种形式的教程,让你有了解基本概念. 但是,这里会比较少地介绍面向对象编程(OOP): OOP术语概述 类: 用户定义的原型对