我有這樣一段代碼:結構的動態陣列
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