我有这样一段代码:结构的动态阵列
typedef struct reader
{
char name[50];
char card_num[50];
char title[100];
}reader_t;
int main()
{
vector<reader> vec;
ifstream input_file("D:\\lab.txt", ios::binary);
reader_t master[1];
input_file.read((char*)&master, sizeof(master));
for (size_t idx = 0; idx < 1; idx++)
{
reader temp;
strcpy(temp.name, master[idx].name);
strcpy(temp.card_num, master[idx].card_num);
strcpy(temp.title, master[idx].title);
vec.push_back(temp);
cout << "Name: " << master[idx].name << endl;
cout << "Card num: " << master[idx].card_num << endl;
cout << "Title: " << master[idx].title<<endl;
}
cout << vec.size();
getchar();
}
这是确实的:它读取结构从二进制文件到结构的阵列,将它们复制到载体并显示structure.And是的,我需要做这样的事情 - 我需要在向量中存储文件中的结构,这是我能找到的唯一可行的方式(如果可以告诉,如何读取结构以直接从文件向量 - 不用担心)。
所以,一切工作正常,但问题是,我需要创造条件,能够做同样的功能,但动态array.I写了这样的事情:
void read_structs(int vec_size)
{
ifstream input_file("D:\\lab.txt", ios::binary);
//Here I commented 2 ways how I tried to create a dynamic array of structs
//reader* master = new reader[vec_size];
//reader* master = (reader*)malloc(sizeof(reader) * vec_size);
input_file.read((char*)&master, sizeof(master));
for (size_t idx = 0; idx < vec_size; idx++)
{
reader temp;
strcpy(temp.name, master[idx].name);
strcpy(temp.card_num, master[idx].card_num);
strcpy(temp.title, master[idx].title);
vec.push_back(temp);
cout << "Name: " << master[idx].name << endl;
cout << "Card num: " << master[idx].card_num << endl;
cout << "Title: " << master[idx].title<<endl;
}
}
这除非我试图运行它,否则工作得很好.VS在我的代码中并没有出现严重错误,它只是在程序试图访问master [0] .name时引发异常。
“vec_size”的值是什么? – ameyCU
@ameyCU当我运行我使用的程序1 – NightStallion
只需使用['std :: vector'](http://en.cppreference。com/w/cpp/container/vector) – StoryTeller