C++中获取字符串长度

1,size()方法

size()表示的是string这个容器中的元素个数。如果使用过std::vector之类的容器的话,可以把string看做是一个vector (这里只是举例,并不能等价), char就是这个容器的元素类型。那么size()表示的就是这个vector(容器)中char的个数。

  string s;
    char a;
    cin>>s;
    cout<<s.size();

输入:

1234

输出:

4

2,length()

用string的成员方法length()获取字符串长度
length()比较直观,表示的就是该字符串的长度。

    string s;
    char a;
    cin>>s;
    for (int i = 0; i < s.length(); ++i) {
        a = s[i]-32;
        cout<<a;
    }

输入:

hello

输出;

HELLO

3,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表示在内存中预分配的大小,1004
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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值