string的大小
zmfbird
2009-03-23
#include "stdafx.h" #include <iostream> #include <string> using namespace std; int main(int argc,char* argv[]) { //to output "TrendMicrosoftUSCN" string strArr1[]={"Trend","Micro","soft"}; string *pStrArr1=new string[2]; pStrArr1[0]="US"; pStrArr1[1]="CN"; cout<<"strArr1:"<<sizeof(strArr1)<<endl; cout<<"string:"<<sizeof(string)<<endl; cout<<"pStrArr1:"<<sizeof(pStrArr1)<<endl; for(int i=0;i<sizeof(strArr1)/sizeof(string);i++) cout<<strArr1[i]; for(int j=0;j<2*sizeof(pStrArr1)/sizeof(string);j++) cout<<pStrArr1[j]; return 0; } 在vs2008中sizeof(strng)输出为32,但是在程序源面试宝典中给出的答案是4 上面给出的这段代码书中说是正确代码。但我运行的不对,因为pStrArr1是指针,大小是4,string大小是32,所以第2个for循环不执行。 是书中错了吗? |
|
bohemia
2009-03-24
GCC编译运行sizeof(string) == 4
|
|
zhangyafei_kimi
2009-03-25
C++标准从来没有规定basic_string的大小.不同实现有不同大小.
看看这个,就知道string的实现原来有这么多变化的地方 http://complement.sourceforge.net/compare.pdf |
|
Liweihua
2010-05-19
各种编译器内部有不同的实现
|
|
刘长鸣
2011-06-08
我在VC6.0中运行,string大小16
|