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);

 #include <stdio.h>
#include <stdlib.h>
int main()
{
int i, n;
char *buffer; printf("how long do you want the string? ");
scanf("%d", &i); buffer = (char*)malloc(i+);
if(buffer == NULL) //分配堆内存失败
exit();
memset(buffer, , i+);
for(n=; n<i; n++)
{
buffer[n] = rand()% + 'a';
}
buffer[i] = '\0'; printf("Random string: %s\n", buffer);
free(buffer);
return ;
}

//内存填充函数:

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

 #include  <stdio.h>
#include <string.h>
int main()
{
char str[] = "almost every progreammer should know memset";
memset(str, '-', );
puts(str); return ;
}
11 //输出: ------every progreammer should know memeset;

memcpy

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

 #include <stdio.h>
#include <string.h> struct {
char name[];
int age;
}person, person_copy; int main()
{
char myname[] = "Pierre de Fermat ";
//using memcpy to copy string;
memcpy(person.name, myname, strlen(myname)+ );
person.age = ; //using memcpy to copy structure
memcpy( &person_copy, &person, sizeof(person)); printf("person_copy: %s, %d \n", person_copy.name, person_copy.age ); return ;
}
------输出:
  person_copy: Pierre de Fermat , 46

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

char * strchr(const char* ,  int );

 #include <stdio.h>
#include <string.h> int main()
{
char str[] = "This is a sample ";
//char ch = 's'; ----这样也可以的
int ch = 's';
char *pch;
printf("looking for the 's' character in \"%s\" ...\n", str); pch = strchr(str, ch);
while(pch != NULL)
{
printf("%s\n", pch);
printf("found at %d\n", pch-str+);  //确定位置
pch = strchr(pch+, 's');
} return ;
}
输出:
looking for the 's' character in  "This is a  sample " ...
s is a  sample
found at 4
s a  sample
found at 7
sample
found at 12

//字符串分割函数

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

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

 //调用 strtok 后, 原字符串会被修改.而且它是确定的,即截取的第一段;
#include <stdio.h>
#include <string.h> int main()
{
char str[] = " this , a sample, string";
char *pch;
char *psh = ","; printf("Splitting string \"%s\" into to \n", str); pch = strtok(str, psh); //第一次调用, 第一参数为源串;-----参数是指针;
while(pch !=NULL)
{
printf("源字符串被截取之后为:%s\n", str);
printf("函数的返回值为:%s\n", pch);
pch = strtok(NULL, psh); //第2, 3,。。。。次调用,第一个参数使用NULL
} return ;
}
输出:
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);  //参数是指针;

 #include <stdio.h>
#include <string.h> int main()
{
char str1[] = "Sample string ";
char str2[];
char str3[]; strcpy(str2, str1);
strcpy(str3, "copy successful "); printf("str1: %s\n str2: %s\n str3: %s\n ", str1, str2, str3); return ;
}
-----输出
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()返回的指针

 char * c;
string str = "";
c = str.c_str(); ////c最后指向的内容是垃圾,因为s对象被析构,其内容被处理 应该这样用:
char c[];
string s="";
strcpy(c,s.c_str());
这样才不会出错,c_str()返回的是一个临时指针,不能对其进行操作
 #include <iostream>
#include <cstring>
#include <string> int main()
{
std::string str("please split this sentense into tokens"); char *cstr = new char[str.length()+];
std::strcpy(cstr, str.c_str());  //c_str()转为指针; std::cout <<"cstr = "<< cstr << std::endl;
char *p = std::strtok(cstr, " ");
while(p != )
{
std::cout << p << '\n';
p = strtok(NULL, " ");
} delete[] cstr;
return ;
}

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

原型:size_t length() const;

return length of string

 #include <iostream>
#include <string> int main()
{
std::string str("test string ");
std::cout << "the size of str is " << str.length() << " characters. \n";
std::cout << "the size of str is " << str.size() << " characters. \n";
return ;
}

string::resize

原型:void resize(size_t   n);

      void resize (size_t   n,  char  c);

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

 #include <iostream>
#include <string> int main()
{
std::string str("I like to code in C");
std::cout << str << std::endl; unsigned sz = str.size();
std::cout << sz << std::endl;
std::cout << str << std::endl; str.resize(sz+, '+');
std::cout << str << std::endl; str.resize();
std::cout << str << std::endl;
str.resize();
std::cout << str << std::endl; return ;
}
-----输出:
I like to code in  C
20
I like to code in  C
I like to code in  C++
I like to code in  C++
I like to code

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

  1. Python中的字符串及其相关操作

    1.表示: 字符串可以用单引号或者双引号括起来,两者效果是完全一样的. 针对较长的字符串,也可以用三个引号括起来,即"""..."""或者' ...

  2. SQL Server 中获取字符串拼音的标量函数实现

        工作中时常遇到字符串转换为拼音的需求.特别目前在各大网站平台都可以看到的基于拼音的查询功能.如果在查询中增加相应的拼音查询,就可以减少很多的因中文汉字完全输入的不便利,例如:当我要查询叫”郭德 ...

  3. C语言中关于字符串的一些常用函数

    使用以下时应当在头文件中加入string.h getch()为当你键入任何一个值时,返回但是并不显示,立马编译结束,返回的是asc码  getchar():当你键入回车之后才算是输入结束,并且可以用p ...

  4. python中通过字符串名来调用函数

    强调:eval()函数功能虽然强大,但是也很危险,这个方法需要慎重使用. 利用python中的内置函数 eval() ,函数说明: def eval(*args, **kwargs): # real ...

  5. JAVA中对字符串的常见处理函数汇总

    字符串 看到字符串,想到字符串处理中,有 字符串的反转,初级面试中常用到 字符串分割成字符串组,初级面试中常用到 字符串中的替换,初级面试中常用到 字符串中的截取,初级面试中常用到 反转reverse ...

  6. PHP字符串位置相关的函数

    strpos函数 描述:将返回一个字符串在另一个字符串第一次出现的位置 语法:int strpos(string haystack, mixed needle [,int offset]); 相反地 ...

  7. PHP中计算字符串相似度的函数代码

    similar_text — 计算两个字符串的相似度 int similar_text ( string $first , string $second [, float &$percent ...

  8. Python3中dict字典的相关操作函数

    字典对象的内建函数 1. clear() 清空字典. 例: >>> a = {1:3, 2:4} >>> a.clear() >>> a {} 2 ...

  9. Linux中与环境变量相关的函数

    1.在终端可以通过env.set命令查看当前的环境变量 2.通过main函数中的第三个参数可以得到当前进程的环境变量列表 int main(int argc , char *argv[] , char ...

随机推荐

  1. Android开发:自定义GridView/ListView数据源

    http://mobile.51cto.com/android-259861.htm 在开发中,我们常常会遇到比较复杂的GridView/ListView的布局,重新实现BaseAdapter不但能帮 ...

  2. (译)iPhone: 用公开API创建带小数点的数字键盘 (OS 3.0, OS 4.0)

    (译)iPhone: 用公开API创建带小数点的数字键盘 (OS 3.0, OS 4.0) 更新:ios4.1现在已经将这个做到SDK了.你可以设置键盘类型为UIKeyboardTypeDecimal ...

  3. POJ 2976 Dropping tests(二分答案)

    [题目链接]  http://poj.org/problem?id=2976 [题目大意] 给出每门成绩的总分和得分,去除k门成绩之后 使得剩余的成绩分数和除以总分得到的数字最大,要求精度在三位小数之 ...

  4. 网易云课堂_程序设计入门-C语言_第三周:循环_1奇偶个数

    1 奇偶个数(5分) 题目内容: 你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据.程序输出读到的数据中的奇数和偶数的个数. 输入格式: 一系列正整数,整数的范围是(0,1 ...

  5. ORA-02287: 此处不同意序号

    ORA-02287: 此处不同意序号 insert into gls_vchitem     (viid,      yr,      km)     select gls_vchitem_seq.n ...

  6. update慢怎样处理?

    update慢: 1.表的pctfree參数设置? 2.运行计划用索引还是全表扫? 3.SQL语句写法问题? 4.update慢还是commit慢? 5.更新多少条数据? 6.表是否频繁update造 ...

  7. 关于我和document.write那点不得不说的事

    一直用document.write()方法向浏览器中显示数据用,把它当做Alert()使用, 看来这样用有些大材小用了,下面说说它的主要用处. document.write()方法可以用在两个方面: ...

  8. puts fputs printf的区别

    puts()显示字符串时自动在其后添加一个换行符,函数里的参数是一个地址,从该地址向后面输出,直到遇到空字符,所以要确保输出的字符串里要有空字符.与gets()函数一起使用. fputs()需要第二个 ...

  9. Linux学习之awk命令

    一. AWK 说明    awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入.一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能 ...

  10. [poco] HttpRequest之post方法

    转自 http://www.cnblogs.com/yuanxiaoping_21cn_com/archive/2012/06/10/2544032.html #import <iostream ...