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
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/303805
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!