c++字符数组的长度
时间: 2025-04-17 10:47:28 浏览: 21
### C++ 中获取字符数组长度的方法
在C++中,可以通过多种方式来获取字符数组的长度。一种常见的方式是利用 `sizeof` 运算符结合除法运算来实现这一目的。
对于字符数组而言,可以采用如下方法:
```cpp
char ch[19];
int length = sizeof(ch) / sizeof(char); // 结果为19[^2]
```
上述代码通过计算整个字符数组所占空间大小并除以单个字符所需的空间大小得出字符数组中的元素数量。这种方法适用于编译期已知大小的静态分配数组。
值得注意的是,当处理包含中文字符的情况时,由于一个汉字通常占用两个字节存储,在某些编码下可能会被视作两个单位长度。
另一种更为通用的做法涉及模板函数的应用,这允许更灵活地处理不同类型的数组而不仅仅是字符数组:
```cpp
template <class T>
int getArrayLen(T &array) {
const int len = sizeof(array) / sizeof(array[0]);
char a[len]; // 创建一个和 array 等长的 char 数组
if (typeid(array) == typeid(a))
return len - 1; // 返回 char 数组的实际长度
else
return len;
}
```
此段代码定义了一个名为 `getArrayLen` 的模板函数,它能够接收任意类型的数组作为参数,并返回该数组的有效元素数目。特别地,如果传入的是字符数组,则考虑到可能存在的终止符 `\0` ,实际有效长度应减去一[^3]。
针对仅由ASCII字符组成的简单情况,还可以考虑使用标准库提供的 `strlen()` 函数直接作用于指向字符数组首地址的指针上,从而获得不带结尾零字符在内的真正意义上的字符串长度。
```cpp
#include <cstring>
char str[] = "example";
size_t length = strlen(str);
```
这里调用了 `<cstring>` 头文件里的 `strlen()` 来测量直到遇到第一个空字符之前的所有字符数,因此非常适合用来衡量纯文本串的实际尺寸而不必担心额外的结束标记影响结果准确性[^1]。
阅读全文
相关推荐


















