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
原文:https://www.cnblogs.com/Stephen-Qin/p/11631738.html