这篇帖子主要是收集我自己关于c-style string 和string类的迷惑的地方
1、c-style字符串和string占内存多少的问题
int main()
{
char a[] = "lipeng is hansome"; //17 characters;
char e[19] = "lipeng is hansome"; //17 characters;
char* b = "yes he is briliant";
string c = "lipeng is hansome";
string d = "yes he is briliant";//18 charactors;
cout << "a" << sizeof(a)<<endl;
cout << "b" << sizeof(b) << endl;
cout << "c: sizeof(c)= " << sizeof(c) <<" c length="<<c.size() <<endl;
cout << "d: sizeof(d)= " << sizeof(d) << " d length=" << d.size() << endl;
system("pause");
return 0;
}
输出如下:
对于指针b求sizeof,得到4,对于字符数组a求sizeof,得到18.
对于string c 和d,求sizeof得到 28
不懂为什么capacity是31,sizeof求得28.
再有就是对于制定容量的数组
char e[19] = "lipeng is hansome"; //17 characters;
//当修改为
char e[17] = "lipeng is hansome"; //17 characters;
会得到下面的编译错误信息:
1>e:\visualstudiocode\aboutstring\aboutstring\源.cpp(8): error C2117: “e”: 数组界限溢出