结构数组错误
Error in Array of struct
我有下一个程序,在struct中引入数据时出现问题
#include <iostream>
#include <string.h>
struct message{
char msg[];
};
int main(void)
{
int i=0;
struct message messag[2];
messag[0].msg[]={ 'a', 't','\r', '\n'};
return 0;
}
这个结构定义
struct message{
char msg[];
};
错误,因为消息类型不完整。数组的大小未知。
数组也没有赋值运算符。所以你可能不会写成
messag[0].msg[]={ 'a', 't','\r', '\n'};
(此语句在语法上根本不正确)或
messag[0].msg={ 'a', 't','\r', '\n'};
如果 msg 声明为 std::array<char, 4>
,您可以使用最后一条语句。例如
#include <array>
//...
struct message
{
std::array<char, 4> msg;
};
如果在编译时不知道数组的大小,那么您需要动态分配数组。例如,您可以使用智能指针 std::unique_ptr
.
这是一个演示程序
#include <iostream>
#include <memory>
struct message
{
std::unique_ptr<char[]> msg;
};
int main()
{
message message[2];
message[0].msg.reset( new char[4] { 'a', 't','\r', '\n' } );
return 0;
}
另一种方法是使用标准 class std::string
。例如
#include <string>
struct message
{
std::string msg;
};
int main()
{
message message[2];
message[0].msg = { 'a', 't','\r', '\n' };
return 0;
}
我有下一个程序,在struct中引入数据时出现问题
#include <iostream>
#include <string.h>
struct message{
char msg[];
};
int main(void)
{
int i=0;
struct message messag[2];
messag[0].msg[]={ 'a', 't','\r', '\n'};
return 0;
}
这个结构定义
struct message{
char msg[];
};
错误,因为消息类型不完整。数组的大小未知。
数组也没有赋值运算符。所以你可能不会写成
messag[0].msg[]={ 'a', 't','\r', '\n'};
(此语句在语法上根本不正确)或
messag[0].msg={ 'a', 't','\r', '\n'};
如果 msg 声明为 std::array<char, 4>
,您可以使用最后一条语句。例如
#include <array>
//...
struct message
{
std::array<char, 4> msg;
};
如果在编译时不知道数组的大小,那么您需要动态分配数组。例如,您可以使用智能指针 std::unique_ptr
.
这是一个演示程序
#include <iostream>
#include <memory>
struct message
{
std::unique_ptr<char[]> msg;
};
int main()
{
message message[2];
message[0].msg.reset( new char[4] { 'a', 't','\r', '\n' } );
return 0;
}
另一种方法是使用标准 class std::string
。例如
#include <string>
struct message
{
std::string msg;
};
int main()
{
message message[2];
message[0].msg = { 'a', 't','\r', '\n' };
return 0;
}