string的size(), length() 和 char[]的strlen()都是不包括‘\0'的,他们都是“外貌协会”的,只停留在表面。
而sizeof则是从内存角度来反映,它是包括’\0‘的。注意sizeof(指针)只是表示指针所占的内存大小。
1 #include <iostream>
2 #include<string>
3 #include<cstring>
4
5 using namespace std;
6 using std::string;
7
8 int main()
9 {
10 string ch = "panther";
11 int nSize = ch.size();
12 int nLength = ch.length();
13 cout << "nSize:" << nSize << endl; //7
14 cout << "nLength:" << nLength << endl; //7
15
16
17 char char1[] = "panther";
18 char *pChar = char1;
19
20 int nStrlen = strlen(char1);
21 int nSizeofArr = sizeof(char1)/sizeof(char);//此处若char1定义时为[20],则此处nSizeof为20.
22 int nSizeofPtr = sizeof(pChar); //这样写法则是指针所占内存
23 cout << "nStrlen:" << nStrlen << endl; //7
24 cout << "nSizeofArr:" << nSizeofArr << endl; //8
25 cout << "nSizeofPtr:" << nSizeofPtr << endl; //4