c++ - 如何将 vector 转换为 typedef 类型的数组

标签 c++ arrays file vector

我在头文件中定义了一个 typedef:

typedef unsigned char       BYTE;

我有以下代码:

BYTE rgbPlaintext[] = {0x00};
rgbPlaintext* = &vec[0];

vec 是一个由文件填充的 unsigned char 数组(没有问题)。我的问题是,上面的代码没有成功构建,它只是说 syntax error : '=' at the line rgbPlaintext* = &vec[0];

我怎样才能成功地将数组指向属于 typedef 基础类型的 vector 中的数组?

谢谢。

最佳答案

My issue is, the above code does not build successfully, all it says is syntax error : '=' at the line rgbPlaintext* = &vec[0];

您收到错误是因为编译器期望乘法运算符的右手参数,但却发现 = 不是乘法运算符的有效操作数。我觉得乘法不是你的本意。

How to convert a vector to an array of a typdef type

vector 不能转换为数组。

也许您的意思是将 vector 的内容复制到数组中。很简单:

std::copy(vec.begin(), vec.end(), rgbPlaintext);

但是,您需要小心。如果数组小于 vector ,则它会溢出并出现未定义的行为。

How can I successfully point the array to the array that is...

数组不指向任何东西,你也不能让它们指向任何东西。数组包含对象。

在这种情况下,数组 rgbPlaintext 包含一个值为 0x00 的元素。您可以使用我展示的方法将 vector 的内容复制到 rgbPlaintext,但如果 vector 包含多个元素,复制将溢出。

How would one know the size of an array needed if the vector that the array is based off of is populated by a data file?

可以使用 std::vector::size() 获知 vector 的大小。但是大小在编译时是未知的,所以如果你打算将内容复制到一个数组并且不能限制最大大小,那么你就不能使用自动或静态分配的数组。您可以使用动态分配的数组,为此,我建议使用 std::vector

将 vector 复制到另一个很简单:

std::vector<BYTE> rgbPlaintext = vec;

只要 BYTEdecltype(vec)::value_type 的类型相同就可以了。一种类型是否是另一种类型的别名并不重要。

关于c++ - 如何将 vector 转换为 typedef 类型的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36577652/

相关文章:

java - 分数程序 - Java

c++ - Flex/Lex 从输入文件读取

c - 如何使用C编程语言删除文本文件中的特定行

使用 MinGW 的 C++ 可执行文件大小

c++ - 复制 MPI_Win?

java - 有界堆栈实现

language-agnostic - 计算文件复制/移动的估计时间?

用于类比较的 C++ dynamic_cast vs typeid

c++ - 如何计算二维数组的结构张量?

不能在 C 中将 sscanf() 用于字符数组