我创建了这个struct
:
struct message_text{
char text[1024];
};
message_text instance;
instance.text = "HELLO WORLD, FIRST MESSAGE";
我收到此错误:
error: incompatible types in assignment of ‘const char [27]’ to ‘char [1024]’
instance.text = "HELLO WORLD, FIRST MESSAGE";
我不明白这个错误,因为instance.text
的大小不超过最大邮件大小,即1024字节。
我看过其他类似的问题,但我无法理解在创建结构时我的错误是什么
感谢帮助
答案 0 :(得分:1)
char
数组不能像那样工作 - 例如,你不能像int
那样分配它们(尽管你可以在初始化数组时这样做)。如果您要将该文字复制到char
数组中,请使用strncpy
。
或者,更好的是,当您将其标记为C ++时 - 只需使用标准的string
类。
答案 1 :(得分:0)
正如其他人提到的,您应该使用std::string
。但是如果你真的想为数组分配一个字符串文字,你可以这样做:
struct message_text{
char text[1024];
template <int N>
void assignText(const char (&other)[N]) {
static_assert(N < 1024, "String contains more than 1024 chars");
for(int i =0 ; i < N ; ++i) {
text[i] = other[i];
}
}
};
注意:
assignText
是一个模板,它会为每个使用唯一N的用户生成一个函数。这可能会导致二进制文件大小增加。assignText
是模板,因此您必须在标头或同一源文件中定义它。 编译器资源管理器:https://godbolt.org/g/1oLcAq