C++中sizeof(string)

上代码:

// test_max.cpp : 定义控制台应用程序的入口点。

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

int main(void)
{
	string strArr1[]={"Cjc ","is ","a "};
	string *pStrArr1=new string[2];
	pStrArr1[0]="good";
	pStrArr1[1]="boy.";

	cout<<"string type‘s length is "<<sizeof(string)<<endl;
	for(int i=0;i<sizeof(strArr1)/sizeof(string);i++)
	{
		cout<<strArr1[i];
	}
	for(int i=0;i<sizeof(pStrArr1)/sizeof(string);i++)
	{
		cout<<pStrArr1[i];
	}

	system("pause");
	return 0;
}

有以上的结果可知:在VS2010 windows7 32位操作系统中string类的长度为32字节(与string的实现有关)

注意:sizeof不能求出动态分配的内存块大小,所以sizeof(pStrArr1)的结果为4

故得到如图所示的结果

修改后的代码

for(int i=0;i<sizeof(pStrArr1)/sizeof(string);i++)

改为

for(int i=0;i<sizeof(*pStrArr1)*2/sizeof(string);i++)

C++中sizeof(string)

时间: 2024-10-25 15:02:01

C++中sizeof(string)的相关文章

实战c++中的string系列--string与char*、const char *的转换(data() or c_str())

在project中,我们也有非常多时候用到string与char*之间的转换,这里有个一我们之前提到的函数 c_str(),看看这个原型: const char *c_str(); c_str()函数返回一个指向正规C字符串的指针, 内容与本string串同样. 这就看到了吧,返回值是const char*,这里须要注意一下. 1 string转const char* 当然是用到上面所述的方法c_str(): string s1 = "abcdeg"; const char *k =

从sizeof(string)到引用计数的漫游

前言: 说是漫游,其实就是扯,一点一点的扯. 话说之前参加华为的德州扑克比赛,我用C++解析消息的时候碰到一个小问题,就是定长收消息的时候出错,在Linux下调了很久很久,终于发现,sizeof(string)不是string的size,而是string类型的大小.当然,用string.size()就可以轻松解决了,而作品也在昨晚提交了,不过,交的是python的.我的C++程序,送给了两支队伍,让他们去参赛,可惜,白眼狼. 既然有闲暇时间了,那么就要深究一下,sizeof(string)是个什

MFC中cstring,string和char[]的相互转化

int 转 CString:CString.Format("%d",int);...............................string 转 CString CString.format("%s", string.c_str()); 用c_str()确实比data()要好. .......................................char* 转 CString CString.format("%s", cha

C++(C)中Sizeof与Strlen的区别

C++(C)中Sizeof与Strlen的区别 一.知识总结: 1.sizeof (1).使用方法 sizeof为运算符 sizeof unary-expression sizeof ( type-name ) (2).运行阶段 sizeof在编译时计算. (3).返回值 sizeof:获取对象所分配的字节大小. 用sizeof来返回类型以及静态分配的对象.结构或数组所占的空间,返回值跟对象.结构.数组所存储的内容没有关系. 具体而言,当参数分别如下时,sizeof返回的值表示的含义如下: 数组

C++结构体中sizeof(1)

sizeof sizeof操作符的作用是返回一个对象或类型名的长度,长度的单位是字节. 返回值的类型是标准库命名为size_t的类型,size_t类型定义在cstddef头文件中,该头文件是C标准库的头文件stddef.h的C++版本.他是一个和机器相关的unsigned类型,其大小足以保证内存中对象的大小. 1.什么是sizeof 首先看一下sizeof在msdn上的定义: The sizeof keyword gives the amount of storage, in bytes, as

C#中sizeof的用法实例分析

这篇文章主要介绍了C#中sizeof的用法,包括了常见的用法及注释事项,需要的朋友可以参考下. sizeof是C#中非常重要的方法,本文就以实例形式分析C#中sizeof的用法.分享给大家供大家参考.具体分析如下: 在C#中,sizeof用来计算类型的大小,单位是字节.有这样的一个类: 1 2 3 4 5 6 public class MyUglyClass { public char myChar1; public int myInt; public char myChar2; } 在客户端,

sizeof(string)的问题(很经典)

今天看到一个代码,刚开始没有看明白,代码如下: <span style="font-size:14px;">#include<iostream> #include<string> using namespace std; void main() { string a="www.ok2002.com"; string b=" study C++ program"; a.append(b,0,sizeof(b)+2

6-探秘Java中的String、StringBuilder以及StringBuffer

相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String.StringBuilder和StringBuffer这几个类,分析它们的异同点以及了解各个类适用的场景.下面是本文的目录大纲: 一.你了解String类吗? 二.深入理解String.StringBuffer.StringBuilder 三.不同场景下三个类的性能测试 四.常见的关于String.StringBuffer的面试题(辟谣网上流传的一些曲解String类

Java中的String为什么是不可变的?

转载:http://blog.csdn.net/zhangjg_blog/article/details/18319521 什么是不可变对象? 众所周知, 在Java中, String类是不可变的.那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的.不能改变状态的意思是,不能改变对象内的成员变量,包括基本数据类型的值不能改变,引用类型的变量不能指向其他的对象,引用类型指向的对象的状态也不能改变. 区分对象和对象的引用 对于J