英格兰世界杯预选赛_世界杯卡塔尔 - sctzjx.com

获取C/C++字符串/字符数组长度 && strlen函数与sizeof的区别

  • Home
  • 世界杯有中国队吗
  • 获取C/C++字符串/字符数组长度 && strlen函数与sizeof的区别
  • 2026-08-26 09:54:22
  • admin

在C/C++中常用的获取字符串长度或者字符串数组长度的函数有

length() // string类对象的成员函数

size() // string类对象的成员函数

sizeof() // 求所占总空间的字节数,静态的,跟初始状态字符数组的大小有关系,大小等于初始时字符数组的大小或者等于初始时字符数组的大小+1

strlen() // 参数是char*

示例

#include

#include

using namespace std;

int main()

{

/*************************string start******************************/

string str = "hello world!";

cout << "str length = " << str.length() << endl;

cout << "str size = " << str.size() << endl;

cout << "str sizeof = " << sizeof(str) << endl;

cout << "string sizeof = " << sizeof(string) << endl;

string strArr[5] = {"zhangsan", "lisi", "zhaowu", "zhengliu", "wangqi"};

cout << "strArr sizeof = " << sizeof(strArr) / sizeof(string) << endl;

/*************************string end*******************************/

/**************************char start******************************/

char *cString = "hello world!";

cout << "cString length = " << strlen(cString) << endl;

cout << "cString sizeof = " << sizeof(cString) << endl;

cout << "char* sizeof = " << sizeof(char*) << endl;

char cStrArr[] = "hello world!";

cout << "cStrArr length = " << strlen(cStrArr) << endl;

cout << "cStrArr sizeof = " << sizeof(cStrArr) << endl;

/**************************char end********************************/

return 0;

}

// 结果:

// str length = 12

// str size = 12

// str sizeof = 24

// string sizeof = 24

// strArr sizeof = 5

// cString length = 12

// cString sizeof = 8

// char* sizeof = 8

// cStrArr length = 12

// cStrArr sizeof = 13

1. strlen函数

【原型】:

size_t strlen(char const* str);

【作用】:

strlen 是一个函数,它用来计算指定字符串 str 的长度,但不包括结束字符(即 null 字符)

【实例】:

char sArr[] = "ILOVEC";

/*用strlen()求长度*/

printf("sArr的长度=%d\n", strlen(sArr));

// 结果:6

【注意】:

函数 strlen 返回的是一个类型为 size_t (无符号整型)的值,从而有可能让程序导致意想不到的结果

if(strlen(x)- strlen(y)>= 0) 将永远为真。

同样,就算表达式中同时包含了有符号整数和无符号整数,还是有可能产生意想不到的结果

if(strlen(x)- 5>=0) 将永远为真。

2. sizeof

【作用】:

关键字 sizeof 是一个单目运算符,而不是一个函数。与函数 strlen 不同,它的参数可以是数组、指针、类型、对象、函数等,如下面的示例代码所示:

char sArr[] = "ILOVEC";

/*用sizeof求长度*/

printf("sArr的长度=%d\n", sizeof(sArr));

相对于函数 strlen,这里的示例代码运行结果为 7(因为它包括结束字符 null)

【注意】:

sizeof在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。

Previus Post
企业服务总线ESB的定义是什么意思?企业服务总线ESB表示什么?怎么理解企业服务总线ESB的价值?

Copyright © 2088 英格兰世界杯预选赛_世界杯卡塔尔 - sctzjx.com All Rights Reserved.
友情链接