C++获取字符串长度的几个函数方式

 更新时间:2020年12月09日 10:59:24   作者:zhouhongkai06  
这篇文章主要介绍了C++获取字符串长度的几个函数方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

C/C++ strlen(str)、str.length()、str.size()、sizeof(str)都可以求字符串长度。

其中str.length()、str.size()、sizeof(str)是用于求string类对象的成员函数

strlen(str)是用于求字符数组的长度,其参数是char*。

补充知识:获取字符串长度的函数sizeof()、strlen()、length()、size()详解和区别

在C++中计算长度的函数有四种,它们分别是sizeof() ,size(),strlen(),str.length()。

一. sizeof()和strlen()两者区别:

1)sizeof操作符的结果类型是size_t,该类型保证能容纳实现所建立的最大对象的字节大小。

2)sizeof是运算符,strlen是函数。

3)sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。

4)sizeof在编译时期就计算出来,strlen在运行之后才能计算出来。

5)strlen计算字符串的具体长度(只能是字符串),不包括字符串结束符。返回的是字符个数。sizeof计算声明后所占的内存数(字节大小),不是实际长度。

举例:

1)char* ss = "0123456789";

sizeof(ss)为4,ss是指向字符串常量的字符指针,sizeof 获得的是指针所占的空间,则为4

sizeof(*ss)为1,*ss是第一个char字符,则为1

2)char ss[] = "0123456789";

sizeof(ss)为11,ss是数组,计算到'\0'位置,因此是(10+1)

sizeof(*ss)为1,*ss是第一个字符

3)char ss[100] = "0123456789";

sizeof(ss)为100,ss表示在内存中预分配的大小,100*1

strlen(ss)为10,它的内部实现用一个循环计算字符串的长度,直到'\0'为止。

4)int ss[100] = "0123456789";

sizeof(ss)为400,ss表示在内存中预分配的大小,100*4

strlen(ss)错误,strlen参数只能是char*,且必须是以'\0'结尾

5)char[] a={'a','b','c'};

sizeof(a)的值应该为3。

char[] b={"abc"};

sizeof(b)的值应该是4。

6)若string str={'a','b','c','\0','X'};

那么sizeof(str)为5,strlen(str)为3。

二. string中的length()和size()

c++中,在获取字符串长度时,size()函数与length()函数作用相同。

例如:string str = “wang”

则,str.length() = 4。

除此之外,size()函数还可以获取vector类型的长度。

例如:vector < int> num(15,2)

则,num.size() = 15。

以上这篇C++获取字符串长度的几个函数方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解C++中inline关键字的作用

    详解C++中inline关键字的作用

    这篇文章主要为大家介绍了C++中的inline关键字,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析

    Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析

    这篇文章主要介绍了Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析,有助于更加直观的理解Object-C常用的结构体,需要的朋友可以参考下
    2014-07-07
  • 深入浅析C++中的#,##,和

    深入浅析C++中的#,##,和

    这篇文章主要介绍了C++中的#,##,和"的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-09-09
  • C++中调用复制(拷贝)函数的三种情况总结

    C++中调用复制(拷贝)函数的三种情况总结

    这篇文章主要介绍了C++中调用复制(拷贝)函数的三种情况总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • C++ LeetCode1832题解判断句子是否为全字母句

    C++ LeetCode1832题解判断句子是否为全字母句

    这篇文章主要为大家介绍了C++ LeetCode1832题解判断句子是否为全字母句示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • 一篇文章带你了解C语言内存对齐

    一篇文章带你了解C语言内存对齐

    在单片机下使用C语言编程时,内存对齐的知识点必须掌握。掌握内存对齐后,可以防止内存碎片化,并且证明你有能力优化内存。嵌入式单片机开发的后阶段,无非就是优化内存与优化代码执行效率。
    2021-08-08
  • 虚函数被类的构造析构函数和成员函数调用虚函数的执行过程

    虚函数被类的构造析构函数和成员函数调用虚函数的执行过程

    虚函数被类的构造析构函数和成员函数调用虚函数的执行过程,需要的朋友可以参考下
    2013-02-02
  • C语言的合法标识符与整型详解

    C语言的合法标识符与整型详解

    这篇文章主要为大家详细介绍了C语言的合法标识符与整,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • C语言学习之柔性数组详解

    C语言学习之柔性数组详解

    结构体的最后一个元素允许是未知大小的数组,这就叫柔性数组。这篇文中主要为大家详细介绍了C语言中柔性数组的相关知识,需要的可以了解一下
    2023-03-03
  • Qt增加版本公司等信息两种方式

    Qt增加版本公司等信息两种方式

    在项目中生成exe或者动态库过程中可能需要加入公司信息、版本号、说明等等,下面这篇文章主要给大家介绍了关于Qt增加版本公司等信息的两种方式,需要的朋友可以参考下
    2024-01-01

最新评论