我完全难过了。如何填充另一个struct
中包含的struct
数组?
我有两个struct
s:
struct employee_stats{
char emp_name[MAX_NAME_LENGTH];
double salary;
int years_employed;
}
struct annual_reviews{
int year;
struct employee_stats employee[NO_EMPLOYEES];
}
我声明了一个指向annual_reviews
结构数组
annual_reviews *sort_records = new annual_reviews[num_years];
我有一个vector
个字符串,可以从程序前面的文本文件中读取。我将employee_record
和year
向量发送到方法以填充两个struct
void DataSort::load_records(vector<string> employee_record, vector<string> year){
vector<string> line_data;
string word;
//split employee_record by \t and into single line string vector
for(int i = 0; i < employee_record.size(); i++){
stringstream wordstream(employee_records[i]);
while(getline(wordstream, word, '\t')){
if(!word.empty())
line.push_back(word);
}
}
现在,在同一方法中,我想将此数据添加到struct
s:
for(int j = 0; j < num_years; j++){
sort_records[i].year = atoi(year[i].c_str); //year of record
for(int k = 0; k < NO_EMPLOYEES; k++){
//here is where it all falls apart
sort_records[j].employee_stats[j].emp_name = line[j]; //fill the records
}
}
}
我意识到我没有正确访问内部struct
,但我已经卡住了,我已经撞墙了。
我使用VS2015得到两个编译错误:
std::basic_string<char,std::char_traits<char>,std::allocator<char>>::c_str':non-standard syntax;use'&'to create a pointer to member
array type 'char[25]' is not assignable
有人能指出我正确的方向吗?我是否需要创建指向成员struct
的指针?我以为你可以直接为成员编制索引。
感谢。
答案 0 :(得分:1)
用于制作数据类型的结构。
struct employee_stats{
char emp_name[MAX_NAME_LENGTH];
double salary;
int years_employed;
}
struct annual_reviews{
int year;
struct employee_stats[NO_EMPLOYEES];
}
对于annual_reviews数据类型的,我认为您使用
声明了另一种数据类型struct employee_stats
所以我认为你应该把它声明为你想要的第二个数据数组
struct employee_stats{
char emp_name[MAX_NAME_LENGTH];
double salary;
int years_employed;
}
struct annual_reviews{
int year;
employee_stats employeeData[NO_EMPLOYEEs];
}
在创建变量类型annual_reviews后,我认为您可以访问employeeData数组。然后对于char错误,我认为你应该在emp_name上使用string作为dataType。
[编辑] 将字符串复制到char
strcpy(sort_records[j].employee_stats[j].emp_name, line[j].c_str());
阅读来源:http://www.cplusplus.com/reference/string/string/c_str/
答案 1 :(得分:0)
你的问题是你没有正确地宣布内部结构。
您的代码看起来应该像这样(伪代码):
typedef employee_stats some_type;
Use some_type inside annual_reviews.
其余的都是微不足道的。