c语⾔中字符串hello⼏个字节,浅谈C++中的string类型占⼏个字
节
在C语⾔中我们操作字符串肯定⽤到的是指针或者数组,这样相对来说对字符串的处理还是⽐较⿇烦的,好在C++中提供了 string 类型的⽀持,让我们在处理字符串时⽅便了许多。
⾸先,我写了⼀段测试代码,如下所⽰:
#include
using namespace std;
int main(void)
{
string str_test1;
string str_test2 = "Hello World";
int value1, value2, value3;
value1 = sizeof(str_test1);
value2 = sizeof(str_test2);
value3 = sizeof(string);
cout<
cout<
cout<
system("pause");
return 0;
}
⾸先,我⽤G++编译运⾏,得到的结果如下图所⽰:
这说明string占4个字节。
之后,我⽤VS2012编译运⾏,得到的结果如下图所⽰:
奇怪,这⾥string竟然占28个字节。
这⾥,我们注意观察,还会发现⼀个问题,不管有没有对string类型的变量赋值,或者是赋什么值,得到的结果是⼀样的。
下⾯,来解释上述问题:string的实现在各库中可能有所不同,但是在同⼀库中相同⼀点是,⽆论你的string⾥放多长的字符串,它的sizeof()都是固定的,字符串所占的空间是从堆中动态分配的,与sizeof()⽆关。 sizeof(string)=4可能是最典型的实现之⼀,不过也有sizeof()为12、32字节的库实现。通常,我们所⽤到的 string 类型⼀般都会是这样实现:
class{
char *_Ptr; //指向字符串的指针
int _Len; //字符串的长度
c++中string的用法........};
所以,我们⼀般接触到的string类型所占字节数为 8+。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论