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