c++ - 数组类型 'char [n]' 和 'uint8 [n]' 不可赋值
问题描述
我正在尝试转换两种类型的值:char
和uint8
.
我有一个功能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];
解决方案
问题不在于数组中元素的类型,而在于您根本无法将一个静态数组分配给另一个静态数组,如下所示:
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);
确保两者a
和b
至少指向N
元素,否则您将调用未定义的行为。
推荐阅读
- php - 减少 PHP 数组的分布
- jquery - 如何使用 jQuery 检查 ASP.NET CheckBoxList
- swiftui - 选择器选择未更新
- bash - 使用超链接更改终端中的目录
- python - 试图定义从泡菜文件中调用键的函数
- dart - DART:如何重新排序字符串中的随机字符?
- python - 使用 Python 在 linux 终端中执行 mysql 命令
- python - 如何使用 nsetools 获取股票列表的当前市场价格?
- c# - 预期的令牌和括号无效
- swiftui - 在 SFSpeechRecognizer.requestAuthorization 中设置变量