1、sizeof()返回的是string对象所占用的空间,而不是string所存储的字符串的大小。 2、string的实现在各库中可能有所不同,但是在同一库中相同的一点是,无论string里放多长的字符串,它的sizeof()都是固定的,字符串所占的空间是从堆中动态分配的,与sizeof()无关。
3、sizeof(string)=4可能是最典型的实现之一,不过也有sizeof()为12、32字节的库实现,VC6.0测试后sizeof(string)=16,说明还是跟编译器有关。
eg: win8.1 64位 vs2012
string str="123156465746465432168asasd"; cout <<sizeof(str) <<endl; //28 cout <<sizeof(string) <<endl; //28