获取数组字符串的长度(需要修改)
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 } |
#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/
-
#include“string.h”
strlen(a)求字符数组的大小是
-
sizeof(a)/sizeof(a[0]);这种基本上万能
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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,欢迎大家贡献代码