问下各位这两个区别
arr.size()是用在字符串上的求字符串个数
sizeof(arr)/sizeof(arr[0])是用来求数组元素个数对吧?
arr.size() 这个 arr 是STL 里的类,普通数组没有这个方法
sizeof(arr)/sizeof(arr[0]) 的确可以求数组的元素个数,但是对于函数内,数组退化为指针,这是不行的。比如
#include <iostream>
using namespace std;
void foo(int arr[])
{
cout << sizeof(arr)/sizeof(arr[0]) << endl;
}
int main() {
int arr[100];
cout << sizeof(arr)/sizeof(arr[0]) << endl;
foo(arr);
return 0;
}
arr.size() 是C++字符串std::string类的一个成员函数,用于返回字符串中的字符数,相当于字符串的长度。
sizeof(arr)/sizeof(arr[0]) 是一种求数组元素个数的常用方法。sizeof(arr)返回数组总大小,sizeof(arr[0])返回单个元素大小,两者相除就可以得到数组元素的个数。
但是有一点需要注意:sizeof(arr)/sizeof(arr[0])这种方法适用于数组,不能直接用于std::string。对于std::string需要使用size()成员函数或length()全局函数来获取字符串长度。