c++语言中string类型,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个字节。
这说明string占4个字节。
之后,我用VS2012编译运行,得到的结果如下图所示:
奇怪,这里string竟然占28个字节。
这里,我们注意观察,还会发现一个问题,不管有没有对string类型的变量赋值,或者是赋什么值,得到的结果是一样的。
下面,来解释上述问题:string的实现在各库中可能有所不同,但是在同一库中相同一点是,无论你的string里放多长的字符串,它的sizeof()都是固定的,字符串所占的空间是从堆中动态分配的,与sizeof()无关。 sizeof(string)=4可能是最典型的实现之一,不过也有sizeof()为12、32字节的库实现。通常,我们所用到的 string 类型一般都会是这样实现:
复制代码 代码如下:
class{
char *_Ptr; //指向字符串的指针
int _Len; //字符串的长度
........};
所以,我们一般接触到的string类型所占字节数为 8+。
c++语言中string类型,c++string类型占几个字节相关推荐
- C语言中int、long等类型所占的字节数
C语言中int.long等类型所占的字节数.实验环境是win10,64位操作系统. #include<stdio.h> int main() {printf("sizeof(in ...
- c语言 单词变复数_关于C语言中的Complex(复数类型)和imaginary(虚数类型)
关于C语言中的Complex(复数类型)和imaginary(虚数类型) 其实这里的复数complex就是数学里的复数,包含实部和虚部两个部分,比如:x=2.1+6i,下面进行详细介绍. C99 新增 ...
- c语言虚数变量,关于C语言中的Complex(复数类型)和imaginary(虚数类型)
关于C语言中的Complex(复数类型)和imaginary(虚数类型) 其实这里的复数complex就是数学里的复数,包含实部和虚部两个部分,比如:x=2.1+6i,下面进行详细介绍. C99 新增 ...
- c语言中int转char数组,将int转换为4字节的char数组(C)
可移植的方式(确保你得到0x00 0x00 0x00 0xaf无处不在)是使用shift: unsigned char bytes[4]; unsigned long n = 175; bytes[0 ...
- c语言中void和void*类型
1.void的作用 c语言中,void为"不确定类型",不可以用void来声明变量.如:void a = 10:如果出现这样语句编译器会报错:variable or field ' ...
- 关于Linux—C语言中的bool类型
关于Linux c语言中的bool数据类型 bool类型属于基本数据类型,其类型名称为bool,值域为非零(true)和零(false).如果我们不加入其他的头文件bool类型是会报错的.bool类型 ...
- Gox语言中的映射类型(字典类型)及其操作-GX8.1
在Gox语言中,是用map类型来表示一般语言中的"字典"(dictionary)概念的,这与Go语言也是一致的.对map的声明.赋值和其他操作,我们来看看下面的例子.由于Gox语言 ...
- c语言中3%3e2%3e1的值,计算机编程基础
1 . C语言源程序中主函数名是( ) A.masterB.leadingC.mainD.major2 . 下列程序的运行结果是()#include A.4,0,7B.5,-1,7C.4,0,5D.5 ...
- go语言中的big包
package mainimport ("fmt""math/big" )func main(){// 数太大了怎么办?// 1.浮点类型可以存储非常大的数值, ...
- c++输出lpbyte类型_变量类型摸不清脉络?用typeid()试试,用一次就上瘾
在python中,利用type()函数,可以很方便的判断变量类型.但是在c/c++中,判断变量类型,却不简单- 出于某个奇葩需求,简单研究了一下c/c++如何判断变量类型,整理总结在此,分享给大家,也 ...
最新文章
- wpf listview 添加控件_WPF开源控件扩展库 MaterialDesignExtensions
- hal库选择滴答时钟函数_STM32入门 : HAL库、标准外设库、LL库
- VMWare ubuntu虚拟机异常关闭打开报错:该虚拟机似乎正在使用中(下班虚拟机最好关闭,免得又异常关闭导致问题)(千万别在虚拟机下win+L锁屏,解锁后就打不开虚拟机了)
- java将日期作为文件名_获取当前时间作为文件名
- 使用npm安装TypeScript
- 微软官方pe工具_很好却不够香!微软官方免费数据恢复工具体验
- 天猫HTML练手项目,GitHub - txz1220/tianmao: 一个模仿天猫网页的项目
- 黑马Java学习笔记之-----数组
- java_Swing桌面程序开发
- delphi 热成像摄像机源代码_红外热成像技术广泛应用于夜间及恶劣气候下目标的监控...
- erlang中遍历取出某个位置的最大值
- 软件工程导论--软件工程概述
- Java项目:医院门诊收费管理系统(java+html+jdbc+mysql)
- 大学计算机word操作教程,word技巧大全:73个word实用技巧分享-电脑教程
- 苹果ios8_手机资讯:你必须要知道的iOS8实用小技巧汇总
- 《经济学原理》——读书笔记(一)
- ICPCCamp 2016 Day 6 - Spb SU and Spb AU Contest(Colored path-dp)
- 树莓派高阶课程7:树莓派博通BCM2835芯片手册导读
- 你能编写CMS79F623的EEPROM写入数据20到地址1,并且给出具体代码
- Python3 math模块以及运算优先级