首页 > 解决方案 > 数组类型 'char [n]' 和 'uint8 [n]' 不可赋值

问题描述

我正在尝试转换两种类型的值:charuint8.

我有一个功能someFunction(TLabel *label, TEdit *edit)。在这个函数内部,我有一个变量char var[6+1].

我正在尝试做的事情:

获取一个字母数字文本(输入TEdit *edit),转换此文本并将其放入var.

我知道如果我调用这个函数并将 和 放入*label*edit想要的任何东西,但问题是转换为关联*edit.var

我的代码示例(函数内部):

char var[6+1];
label->Text = "Some text";
var = edit->Text;
    
//I will put var value inside of an another char (like a #define) that is in a struct, but doesn't matter for now
my_struct.valueOfVar = var;

我还有另一个函数,它是相同的代码,但valueOfVar上面是 a uint8,我也无法转换它:

uint8 valueOfAnotherVar[6+1];

标签: c++c++builderrad-studio

解决方案


问题不在于数组中元素的类型,而在于您根本无法将一个静态数组分配给另一个静态数组,如下所示:

char a[7];
uint8 b[7];
a = b; // error

相反,如果要复制数组中的值,可以std::copy这样使用:

std::copy(std::begin(b), std::end(b), std::begin(a));

如果你有一个动态数组,你仍然可以使用std::copy,但你必须使用数组的大小:

std::copy(b, b + N, a);

确保两者ab至少指向N元素,否则您将调用未定义的行为。


推荐阅读