获取数组字符串的长度(需要修改)

1. 算术表达式

#include <iostream>
 
int main() {
    int arr[4];
    std::cout << sizeof( arr ) / sizeof( arr[0] ) << std::endl; // 输出4
}

或者

#include <iostream>
 
int main() {
    int arr[4];
    std::cout << sizeof( arr ) / sizeof( *arr ) << std::endl;  // 输出4
}

2. 函数模板参数自动推断:

#include <iostream>
 
template <typename T, size_t N>
inline size_t Count(  T ( & arr )[N] ) {
    return N;
}
 
int main() {
    int arr[4];
    std::cout << Count( arr ) << std::endl;  // 输出4
}

3.标准C++模板库:

#include <type_traits>  // 注意包含此头文件.
#include <iostream>
 
int main() {
    int arr[4];
    std::cout << std::extent<decltype( arr ), 0>::value << std::endl; // 输出4
}

4.模板特化与自动类型推断:

include <iostream>
template <typename T>
class ComputeSize;
 
template <typename T, size_t N>
class ComputeSize<T[N]> {
public
    static const size_t value = N;
};
 
int main() { 
    int arr[4]; 
    std::cout << ComputeSize<decltype( arr )>::value << std::endl; // 输出4
}

5. Visual C++编译器预定义宏:

#include <cstdlib>
#include <iostream>
 
int main() {
    int arr[4];
    std::cout << _countof( arr ) << std::endl;  // 输出4.
}

6. boost库

#include "boost/range.hpp"
#include <iostream>
 
int main(){   
    int arr[4];   
    std::cout << boost::size( arr ) << std::endl; // 输出4
}

上面的方法适用于静态数组,动态的数组(new[])是无法获取元素个数的。

 

上面的代码,自己可以编译运行看看,如果手上没有编译器测试上面的代码或者编译失败,可以在下面的页面上编译运行(最新版本的Visual C++):

http://webcompiler.cloudapp.net/

 

 

  1.  #include“string.h”

    strlen(a)求字符数组的大小是

  2. sizeof(a)/sizeof(a[0]);这种基本上万能

  3.  

posted @   Tomorrow1126  阅读(670)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示