1. strlen(char const* s);

函数传入的是c风格字符串(即以‘\0’结尾的字符数组),返回的长度为size_t(即unsigned int),其长度不包括'\0'。

2. strcpy(char* dest, char const* source);

dest:目标指针;

source:是源指针,传入的必须是c风格字符串或者字符数组。

返回值: dest指针

注意:1. 该函数会将包括'\0'在内的source全部拷贝到dest。如果char* source="abcd"; dest为char[],则dest应该定义为char[5];

2. src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

3. C语言中不支持用赋值符号“=”直接将一个字符数组赋值给另一个字符数组。因为C语言不支持运算符重载。故而必须用strcpy操作。

3. strncpy(char* dest, char const* source, size_t n);

n代表可以指定字符个数进行赋值。

功能:将字符串source中最多n个字符复制到字符数组dest中(它并不像strcpy一样遇到NULL才停止复制,而是等凑够n个字符才开始复制),返回指向dest的指针。要求:如果n > dest串长度,dest栈空间溢出产生崩溃异常。该函数注意的地方和strcpy类似,但是n值需特别注意。

1)src串长度<=dest串长度,(这里的串长度包含串尾NULL字符)

如果n=(0, src串长度),src的前n个字符复制到dest中。但是由于没有NULL字符,所以直接访问dest串会发生栈溢出的异常情况。一般建议采取memset将dest的全部元素用null填充,如:memset(dest,0,8)(8为从dest起始地址开始前8个位置填充null,dest可以为字符指针和数组名)。

注意:char* p="abc"; char ch[5]; sizeof(p)为4(包含null)(有些编译器不行),sizeof(ch)为5。

这样:

如果n = source串长度,与strcpy一致。

如果n = dest串长度,[0,src串长度]处存放于dest字串,(src串长度, dest串长度]处存放NULL。

2)source串长度>dest串长度

如果n =dest串长度,则dest串没有NULL字符,会导致输出会有乱码。如果不考虑source串复制完整性,可以将dest最后一字符置为NULL。

所以,一般把n设为dest(含null)的长度(除非将多个source复制到dest中)。当n=dest串长度时,定义dest为字符数组,因为这时没有null字符拷贝。

4. const char *c_str();

c_str()函数是c++中属于string类的成员函数,返回一个指向正规C字符串的指针常量, 内容与本string串相同.(其实它指向的是string对象内部真正的char缓冲区),所以返回const,以防止用户的修改。

注意:(如下这段内容参考 http://www.cnblogs.com/qlwy/archive/2012/03/25/2416937.html)

1)c_str()生成一个const char*指针,指向以空字符终止的数组,但这个数组的数据是临时的(如前所述,其实它指向的是string对象内部真正的char缓冲区),当有一个改变这些数据的成员函数被调用后,其中的数据就会失效。看下例:

const char* c;

string s="1234";

c = s.c_str();

cout<

s="abcd";

cout<

上面如果继续用c指针的话,导致的错误将是不可想象的。就如:1234变为abcd。因此应该把原string的数据复制到用户自己可以管理的内存中。怎么把数据复制出来呢?这就要用到strcpy等函数(推荐)。

//const char* c; //①

//char* c; //②

//char c[20];

char* c=new char[20];

string s="1234";

//c = s.c_str();

strcpy(c,s.c_str());

cout<

s="abcd";

cout<

注意:不能再像①一样将c声明为const char*类型的指针了,因为c要接收strcpy的值;也不能②所示,使用了未初始化的局部变量“c”,运行会出错的 。

2)c_str()返回一个客户程序可读不可改的指向字符数组的指针,不需要手动释放或删除这个指针。

3) data():与c_str()类似,但是返回的数组不以空字符终止。

5. int strcmp ( const char * str1, const char * str2 );

比较两个字符串数组的大小。规则如下:

①字符串1小于字符串2,strcmp函数返回一个负值;

②字符串1等于字符串2,strcmp函数返回零;

③字符串1大于字符串2,strcmp函数返回一个正值;

实际比较时,按字符位置从小到大依次比较各个字符;直到第一对不相等的字符,或者任何一个字符数组遇到'\0'。注意:

if("ABC">"DEF") /*错误的字符串比较*/

if(strcmp("ABC","DEF") /*正确的字符串比较*/

6.  char *strcat(char *dest,char *src);

strcat用于连接字符串,返回结果的头指针。

参考如下两篇文章:

http://www.cnblogs.com/clover-toeic/p/3885181.html

http://blog.csdn.net/smf0504/article/details/52055971

来源:https://www.cnblogs.com/myseasky/p/7458752.html

c语言学string,c语言中的string相关推荐

  1. c语言用string类型,c语言中的string

    1. strlen(char const* s); 函数传入的是c风格字符串(即以'\0'结尾的字符数组),返回的长度为size_t(即unsigned int),其长度不包括'\0'. 2. str ...

  2. c语言中char * string,浅析string 与char* char[]之间的转换

    1.首先必须了解,string可以被看成是以字符为元素的一种容器.字符构成序列(字符串).有时候在字符序列中进行遍历,标准的string类提供了STL容器接口.具有一些成员函数比如begin().en ...

  3. C语言 before string,c语言中expected expression before是什么意思?

    满意答案 chowjack 推荐于 2019.10.23 采纳率:57%    等级:10 已帮助:3269人 1.意思是:在 xxx 之前 应输入表达式. 2.下面为C语言的错误大全及中文解释: 1 ...

  4. C语言中的string头文件解析

    标准库提供了一些函数用于处理字符串,它们的原型位于头文件string.h中. •string.h头文件定义了一个变量: size_t:这是无符号整数类型,它是 sizeof 关键字的结果. •定义了一 ...

  5. C语言中的string.h头文件

    C库提供了多个处理字符串的函数,ANSI C把这些函数的原型放在string.h头文件中. string.h头文件中常用的函数有strlen(),strcat(),strcmp(),strncmp,s ...

  6. C语言中的String类

    最为推荐:https://www.luogu.org/blog/co2021/solution-p1032 https://blog.csdn.net/fdqw_sph/article/details ...

  7. java成员变量默认是_在Java语言中,String类型的成员变量的默认初始值是( )

    在Java语言中,String类型的成员变量的默认初始值是( ) 答:C.null 学生最主要的权利是() 答:受教育权 提倡教育要适合孩子的 "敏感期"的教育家是 答:蒙台梭利 ...

  8. C语言中String库函数大全

    C语言中String库函数 以下内容摘自<C程序设计教程>(美)H.M.Deitel P.J.Deitel著,薛万鹏等译,机械工业出版社. void *memccpy (void *des ...

  9. SWIFT MX报文基础函数与Java语言中String的方法对照理解

    SWIFT MX报文基础函数与Java语言中String的方法对照理解 前言 一.SWIFT是什么? 二.SWIFT MX是什么? 二.报文基础函数与Java语言中String的方法对照表 总结 前言 ...

最新文章

  1. Linux系统文件I/O编程(一)---open()等基本函数
  2. java中printarray和selectsort方法_算法题(一)
  3. Is It A Tree?(hdu1325)
  4. aftershokz蓝牙搜不到_iphone xr黑屏无法开机怎么办?iphonexr蓝牙连不上怎么办?
  5. html 网络请求 json数据,写一个json格式API,http请求接收json数据
  6. 采用dlopen、dlsym、dlclose加载动态链接库【转】
  7. vue修改编码_看,官方出品了 Vue 编码风格指南!
  8. 爱企人事工资管理系统 v8.1 免费下载
  9. udp超过mtu长度 linux,TCP UDP 数据包长度(MSS)总结
  10. SQLMAP注入拖库过程 1
  11. 慧都科技:软件正版化不会一蹴而就 但趋势明显
  12. 2022-04-14每日刷题打卡
  13. 2022-2028年中国移动电商行业深度调研及投资前景预测报告
  14. 百慕大财政部批准Velocity Ledger ICO申请
  15. 软考 中级职称哪些最热门_最怪异的职称也可能是最受欢迎的
  16. 第一类换元法(凑微分法)
  17. badboy和jmeter的下载安装及使用
  18. 计算机基础应用试题——第二卷
  19. Veritas NetBackup8.1.1汉化
  20. Spark实时项目所遇错误,启动SpringBoot收集数据发现数据能读取但全是清一色的404的数据

热门文章

  1. matlab svm异常值判断,异常值检测
  2. css3控制html中图片,精选4款用纯CSS3绘制的有趣图形
  3. 【美化到底】Windows下的Powershell美化
  4. 尾插法建立单链表操作的图文理解
  5. Python能干嘛?
  6. linux操作系统测试工具
  7. PHP 精典汇总(转载)
  8. 中国缘何落后于印度(转)
  9. 人“贱”人爱——香港电影“贱”星X档案
  10. 物联网技术LoRa是什么,主要有哪些技术特色?