什么是C++;模拟C#字节[]? < C++ > C++中的C++(和VisualC++)的模拟是什么?

什么是C++;模拟C#字节[]? < C++ > C++中的C++(和VisualC++)的模拟是什么?,c#,c++,visual-c++,bytearray,byte,C#,C++,Visual C++,Bytearray,Byte,一个等价物是uint8\u t数组[] UTI88T T/C++ >定义在StD.T.H(c)和CSTNDT(C++)中,如果它们不在系统上提供,可以轻松下载或自行定义(参见)。(除非您运行的处理器将字节定义为8位以外的内容) 比如说 在C中# 在C中++ unsigned char *array = new unsigned char[10]; 在C++标准中,代码> char < /> >代码>符号CHAR< 和未签名char 是三种可用的字符类型。 char < /C> >代码>签名

一个等价物是
uint8\u t数组[]


<代码> UTI88T T/C++ >定义在StD.T.H(c)和CSTNDT(C++)中,如果它们不在系统上提供,可以轻松下载或自行定义(参见)。(除非您运行的处理器将字节定义为8位以外的内容)

比如说

在C中#

在C中++

unsigned char *array = new unsigned char[10];

在C++标准中,<>代码> char < /> >代码>符号CHAR< <代码>和<代码>未签名char <代码>是三种可用的字符类型。<代码> char < /C> >代码>签名< /COD>或<代码>未签名< /C> >,因此:

typedef signed char sbyte;
typedef unsigned char byte;

byte bytes[] = { 0, 244, 129 };

或者更传统地说,
无符号字符
@theatrus,不,
字符
不能保证是8位类型。@praetorian:char\u BITS>=8。因此字符不能小于8,但可以更大。uint8\u不仅必须支持8位操作。但是谁说编译器需要在字符上建模uint8\u呢。@Martin York:我不明白,链接是you posted的
uint8\u t
定义如下:
typedef unsigned char uint8\u t
,因此它是以char为模型的。如果char大于8位,uint8\u t也会如此。或者我错了吗?我刚才说的是
uint8\u t
只是表明您的意图,即该变量应该只保存[0 255]范围内的值但在某些平台上,没有什么能阻止您(除了糟糕的编程实践)将较大的数字放入其中。@Praetorian:在这个平台上,它被定义为字符,因为它适用于这个平台。但是没有标准要求(我怀疑)它必须是字符(只要求它必须是8位)。这是Duracell所说的另一种说法。写下你的名字,谢谢!)(帮助我建立visual C++.net库)你的意思是不是
byte[]array=new byte[10]
?是的,谢谢你的关注。我会指出C++和C数组有很多地方是不同的。虽然两者都无法调整大小,但如果您试图访问的数据超过可用数据量,C#将给您一个错误。如果幸运的话,C++可能崩溃。另外,C++可以随时告诉你数组的大小,C++不能告诉你数组是什么时候创建的,你必须记住一些。
typedef signed char sbyte;
typedef unsigned char byte;

byte bytes[] = { 0, 244, 129 };