c string占多少字节,java中String占几个字节
来源:整理 编辑:亚灵电子网 2023-03-31 03:41:47
1,java中String占几个字节
String是对象不是基本类型 你见过有问对象占多少字节的????
2,浅谈C中的string 类型占几个字节
不同compiler不一样的,microsoft的是32字节。std::string其实是一个类
3,一个string类对象最多能储存多少字节的字符串
你好!略小于2GB(估计差8个字节)仅代表个人观点,不喜勿喷,谢谢。"a"要占用2个字节。因为系统会加上一个\0的结束符在a的后面。a就占用一个字节。a是字符常量。
4,c语言整型数据int占几个字节
你好!这个是根据环境而不同的。您可以用sizeof()函数来自行查看的
例:
printf("%d\n",sizeof(int));//取int型数据的长度并以整型的方式打印处来根据编译器了,不同的编译器,规定是不一样。ANSI标准定义int是占2个字节,TC是按ANSI标准的,它的int是占2个字节的。但是在VC里,一个int是占4个字节的。
5,java 中一个英文字母占用几个字节
能贴上具体代码吗?而且不同操作系统对于编码也不尽相同,Srting.getBytes返回的是系统默认的编码格式的数组。有可能是赋值的过程出现问题,也有可能是操作平台的问题。中文操作系统,中文返回2个byte而应用IOS-8895-1的英文系统或者平台默认所有字符都是1byte。在java中 字母就是一个byte,无大小写之分的而汉字 是两个byte既然楼主知道java里面中英文字符都是unicode 16编码格式,都占2个字节,那么当我们用字节流读文件的时候就应该注意每次读取的大小要设定成16bit的倍数。英文不会乱码的原因是英文本来就是用ascii编码的,unicode16编码是在ascii上做了扩充,所以即便不是16的倍数读取,英文字母(只有8bit就能正确显示)照样显示无误,但是中文是后面扩充的,必须要有2个字节才成一个字。希望对楼主有点帮助。如果S是半形,就是1byte,如果是全形,就是2byte,汉字是全形,所以是2byte。
6,CString占用多少字节
首先,CString 里面的数据占用的字节数 = 实际是字符串字符占的内存数加上固定的信息字节数。然后,作为类本身,它的大小( sizeof ) 是4字节,它实际就是一个指针。//将cstring 型ip地址在ipaddressctrl中显示 cstring strip="192.168.0.10"; dword dwip; dwip = inet_addr(strip); unsigned char *pip = (unsigned char*)&dwip; m_ipaddr.setaddress(*pip, *(pip+1), *(pip+2), *(pip+3)); //将ipaddressctrl中的ip地址获得并转换成cstring型 unsigned char *pip; cstring strip; dword dwip; m_ipaddr.getaddress(dwip); pip = (unsigned char*)&dwip; strip.format("%u.%u.%u.%u",*(pip+3), *(pip+2), *(pip+1), *pip);char是系统定义的类型,占用1个字节,而CString是MFC中的一个类,具体大小和这个类的实例(即对象)有关。
7,java中char和String中的字节
大哥,string不是基本类型的,晕...string类, 它的容量是动态增长的, 所以其类的内部实现肯定有关于动态内存的操作, 这和数组的定义是不同的, 数组的大小是在编译期间就确定的, 而string类的大小是在程序运行期间动态确定的。#include <iostream>using namespace std;struct Testint main()Test t;cout << sizeof(t); // 32位机器上毫无疑问的4字节, 你我共识t.p = new int[4096];cout << sizeof(t); // 会变吗?delete [] t.p;}再看string类的真面目, 打开string文件, 你可以看到这句:typedef basic_string<char> string;所以其只是basic_string对于char类型的一个typedef, 这样的话其内部的字符序列就肯定是用char* 类型指针来来操作的了, 毫无疑问sizeof(char*) == 4, 但是为什么sizeof(string) == 16呢, 这是因为string类中还有其他的数据成员, 比如记录字符长度的数据成员是一个32位的无符号整型, string::size()方法其实就是返回这一成员的值了. 但4 + 4 == 8 != 16, 所以不排除有其他的数据成员的存在, 但还有一个要考虑的问题就是内存的对齐问题:#include <iostream>using namespace std;#define GetSize(TypeName, msg)\cout << "class "#TypeName" "#msg" -> " \<< sizeof(TypeName) << " Bytes\n"class A1class A2#pragma pack(1)class B1#pragma pack(2)class B2#pragma pack()class C1class C2int main()GetSize(A1, int a;); // 32位机器上毫无疑问的4字节, 你我共识GetSize(A2, int a; char b;); // 会是5字节吗?GetSize(B1, pack(1) int a; char b;);GetSize(B2, pack(2) int a; char b;);GetSize(C1, int a; + none virtual);GetSize(C2, int a; + virtual);一句话,将字节解释为char的过程你不用管,这说到底是字符集的解析问题,不同的字符集解析字节的方法也不同,如果你一定要搞明白,可以参考JDK中String的构造方法public String(byte bytes[], String charsetName),祝你好运!char占两个字节,不用怀疑String是一个类,占多少字节我们是不知道的!至于你说的一次读取一个字节,这个也很好理解,你不要老想着字符,你想成文件就可以了,比如一个1M的XX安装文件,一次读取一个字节到内存有什么问题么?像用迅雷下载的时候它不也是一次下一些么,如100K,最后拼装成一个文件,这有什么不理解的!InputStream是字节流,不是字符流!
文章TAG:
cstring 多少 字节