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++获取字符串长度的几个函数方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • c读取一行字符串,以及c++读取一行字符串的实例

    一 c读取一行字符串 1 gets #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int size = 1024; char* buff = (char*)malloc(size); // read lines while(NULL != gets(buff)){ printf("Read line with len: %d\n", strlen(buf

  • C++不使用变量求字符串长度strlen函数的实现方法

    本文实例讲述了C++不使用变量求字符串长度strlen函数的实现方法.分享给大家供大家参考.具体实现方法如下: 1.strlen的源码实现: size_t strlen(const char *str) //strlen不做内存非法判断,如果是NULL,会core. { const char *eos=str; while(*eos++); return (eos-str-1); } 2.常见面试题会要求不使用额外变量,实现strlen函数: 实现一: int strlen(const char

  • 详解C++ string常用截取字符串方法

    string常用截取字符串方法有很多,但是配合使用以下两种,基本都能满足要求: find(string strSub, npos); find_last_of(string strSub, npos); 其中strSub是需要寻找的子字符串,npos为查找起始位置.找到返回子字符串首次出现的位置,否则返回-1: 注: (1)find_last_of的npos为从末尾开始寻找的位置. (2)下文中用到的strsub(npos,size)函数,其中npos为开始位置,size为截取大小 例1:直接查

  • 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(),strl

  • mysql获取字符串长度函数(CHAR_LENGTH)

    length:   是计算字段的长度一个汉字是算三个字符,一个数字或字母算一个字符CHAR_LENGTH(str) 返回值为字符串str 的长度,长度的单位为字符.一个多字节字符算作一个单字符.对于一个包含五个二字节字符集, LENGTH()返回值为 10,而CHAR_LENGTH()的返回值为5.CHARACTER_LENGTH(str) CHARACTER_LENGTH()是CHAR_LENGTH()的同义词.BIT_LENGTH(str) 返回2进制长度.例如:可以查出用户名长度少于6个字

  • golang 获取字符串长度的案例

    1.不同字符与获取字符串长度 获取字符串长度,是字符串操作的重要方法.理论来说,获取字符串长度,只要从头到尾查找一遍就可以了.但遗憾的是,不同字符具有不同的编码格式.拉丁字母一个字符只要一个字节就行,而中文则可能需要两道三个字节:UNICODE把所有字符设置为2个字节,UTF-8格式则把所有字符设置为1--3个字节. 因此,字符串长度的获得,不等于按字节数查找,而要根据不同字符编码查找. 2.golang中获取字符串长度的方法 对于中文开发者来说,经常需要对字符串进行长度判断.golang有自己

  • C语言多种获取字符串长度的方法

    在C语言中,想要获取字符串长度可以有很多方法,下面分别介绍 一.使用sizeof()运算符 在C语言中,sizeof() 是长度的运算符,括号中可以放入数据类型或者表达式,一般我们用来计算字符串长度. 基本用法: int i=10; sizeof(i);//表达式 char str[]="hello world"; sizeof(str); sizeof(double);//数据类型 在使用sizeof()求字符串长度时,会将 '\0' 也计算到字符串长度中.例如"abcd&

  • Shell获取字符串长度的多种方法总结

    前言 我们在日常工作中,对于求字符串操作在shell脚本中很常用,实现的方法有很多种,下面就来给大家归纳.汇总了求字符串的几种可能方法,话不多说了,来一起看看详细的介绍吧. 方法如下: [方法一]:利用${#str}来获取字符串的长度 [方法二]:利用awk的length方法 备注: 1) 最好用{}来放置变量 2) 也可以用length($0)来统计文件中每行的长度 [方法三]:利用awk的NF项来获取字符串长度 备注: -F为分隔符,NF为域的个数,即单行字符串的长度 [方法四]:利用wc的

  • PowerShell获取字符串长度的方法

    使用PowerShell可以很方便的计算字符串的长度.PowerShell是继承于Microsoft .NET Framework的,所以在.NET里面怎么获取到字符串的长度,在PowerShell中可以使用相同的方法. 我们知道在.NET中,可以使用String.Length方法来获取字符串的长度,让我们看看PowerShell中怎么样依葫芦画瓢. 复制代码 代码如下: $string = "1234567"; Write-Host $string.Length; #输出为7 如果你

  • Python3之字符串比较_重写cmp函数方式

    目录 Python3字符串比较_重写cmp函数 不多说,直接上代码 字符串比较 cmp op.eq 直接使用cmp,会出现错误 python3 比较字符串如下 Python3字符串比较_重写cmp函数 由于在C ++中习惯了使用CMP函数,所以在遇到字符串排序时,想当然的去使用sort(开始,结束,CMP)去对列表进行排序,但结果好像不行. 后来查阅网上资料,好像在python3中CMP函数已经被取代了. 故而只能另求他法了.下面是很简单的一个字符串日期提取及根据日期排序. 需求是这样的,由于从

  • 解析php获取字符串的编码格式的方法(函数)

    如果不清楚字符串的编码格式的话,就可以将这段字符这样检查:$encode = mb_detect_encoding($string, array("ASCII",'UTF-8′,"GB2312′,"GBK",'BIG5′)); echo $encode;这样就能知道它是什么编码的了.后续操作还可以为其转码:if ($encode == "UTF-8″){$string = iconv("UTF-8″,"GBK",$s

  • PHP获取中英混合字符串长度的方法

    今晚在写框架的表单验证类时,需要判断某个字符串长度是否在指定区间内,很自然地,想到了PHP中的strlen函数. 复制代码 代码如下: $str = 'Hello world!';echo strlen($str); // 输出12 然而在PHP自带的函数中,strlen及mb_strlen都是通过计算字符串所占字节数来计算长度的,在不同的编码情况下,中文所占的字节数是不同的.在GBK/GB2312下,中文字符占2个字节,而在UTF-8下,中文字符占3个字节. 复制代码 代码如下: $str =

  • C语言中求字符串长度的函数的几种实现方法

    1.最常用的方法是创建一个计数器,判断是否遇到'\0',不是'\0'指针就往后加一. int my_strlen(const char *str) { assert(str != NULL); int count = 0; while (*str != '\0') { count++; str++; } return count; } 2.不创建计数器,从前向后遍历一遍,没有遇到'\0'就让指针向后加一,找到最后一个字符,记下来地址,然后用最后一个字符的地址减去起始地址,就得到了字符串的长度.

随机推荐