获取数组字符串的长度

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]);这种基本上万能

猜你喜欢

转载自www.cnblogs.com/h694879357/p/11762538.html
今日推荐