Hello, World!的大小,OJ中要求输出大小。程序如下:
string str="Hello, World!";
cout<<str<<endl;
输出结果是:8,明明应该是14,13个字符加一个结束符,查找资料以后得出如下结论:
string的实现在各库中可能有所不同,但是在同一库中相同一点是,无论你的string里放多长的字符串,它的sizeof()都是固定的,字符串所占的空间是从堆中动态分配的,与sizeof()无关。 sizeof(string)=4可能是最典型的实现之一,不过也有sizeof()为12、32字节的库实现。 但是VC6.0测试后sizeof(string)=16.还是跟编译器有关
#include<iostream>
using namespace std;
int main()
{
string a[] = {"aaaaa","bbbb","ccc"};
string b="aaaaabbbbbccccc";
int x = sizeof(a);
int y = sizeof(string);
int z=sizeof(b);
cout << x << endl;
cout << y << endl;
cout<<z<<endl;
}
```