c++ - 数组必须用大括号括起来的初始化器初始化
问题描述
在我初始化的行中,以下函数出现错误e1
:
error: array must be initialized with a brace-enclosed initializer
EmployeeInfo e1={id, n, p};
void addNewEmployee(){
int id; char n[25]; double p;
cout<<"\nEnter employee ID: "; cin>>id;
cout<<"Enter employee name: "; cin>>n;
cout<<"Enter employee pay rate: "; cin>>p;
EmployeeInfo e1={id, n, p};
ofstream fout("employee.dat", ios::out|ios::app);
fout<<e1.employee_ID<<" "<<e1.name<<" "<<e1.pay_rate<<"\n";
}
结构员工信息由以下给出:
struct EmployeeInfo
{
int employee_ID;
char name[25];
double pay_rate;
};
我该如何纠正这个错误?
解决方案
我该如何纠正这个错误?
选项1:
使用std::string
而不是char[25]
for name
。
struct EmployeeInfo
{
int employee_ID;
std::string name;
double pay_rate;
};
选项 2
直接读入EmployeeInfo
.
void addNewEmployee(){
EmployeeInfo e1;
cout << "\nEnter employee ID: "; cin >> e1.employee_ID;
cout << "Enter employee name: "; cin >> e1.name;
cout << "Enter employee pay rate: "; cin >> e1.pay_rate;
ofstream fout("employee.dat", ios::out|ios::app);
fout << e1.employee_ID << " " << e1.name << " " << e1.pay_rate << "\n";
}
选项 3
使用选项 1和选项 2
struct EmployeeInfo
{
int employee_ID;
std::string name;
double pay_rate;
};
void addNewEmployee(){
EmployeeInfo e1;
cout << "\nEnter employee ID: "; cin >> e1.employee_ID;
cout << "Enter employee name: "; cin >> e1.name;
cout << "Enter employee pay rate: "; cin >> e1.pay_rate;
ofstream fout("employee.dat", ios::out|ios::app);
fout << e1.employee_ID << " " << e1.name << " " << e1.pay_rate << "\n";
}
推荐阅读
- html - 如何改变ant-tooltip组件的文字颜色和背景颜色
- php - 尝试使用 curl 登录时出现“页面已过期”
- c# - 如何将 txt 文件转换为浮点数组(在 c# 中)?
- javascript - 表单集中添加的每个新输入元素的 Django 动态表单增量 ID
- c# - System.Windows.Forms.DateTimePicker 的文本拉伸过多
- bash - 使用正则表达式运算符将字符串与数组的内容进行匹配不起作用
- jenkins - 禁用在 Jenkins 管道日志中显示“[Pipeline]*”行?
- java - 将java转换为Json时是否可以忽略内部类名和变量
- c# - 如何使用c#检查日期时间是否为空
- angular - 重新加载页面将我带到角度 cli 中的根路径