[英]How to open a file and store data into a linked list structure
我有一個函數buildList
,我應該在其中打開一個名為“studentFile1.txt”的給定文件,並使用重載運算符從文件中讀取數據。 我應該將所有數據保存為一個鏈接列表,其中每個學生的信息都是一個節點。 但由於某種原因,我似乎無法打開該文件。 這是函數buildList
{
ifstream file;
file.open("studentFile1.txt");
Student temp; // temporary struct Student object
if (!file)
cout << "Can not open file\n";
while (file >> temp)
{
if (list.insert(temp) == false)
cout << "Insert did not work\n";
}
}
這是重載的運算符 >> 函數
istream &operator>>(istream &istr, Student &obj)
{
ifstream file;
file.open("staudentFile1.txt");
if (!file)
cout << "Can not open file.\n";
while (file)
{
istr >> obj.id;
istr.ignore();
istr.getline(obj.name, 50, '\n');
istr >> obj.gpa;
istr >> obj.major;
}
return istr;
}
當我調用buildList
函數時,它只說“無法打開文件”兩次。 我究竟做錯了什么?
當您編寫 file.open("studentfile1.txt") 時,可執行文件假定該文件與可執行文件位於同一目錄中。 檢查它們是否是。 至於您已經在運算符重載之外打開文件的其余代碼,您不應該再這樣做。 還要刪除 while 循環,因為它會一直讀取到文件末尾,因此您將讀取一條記錄,而所有其他記錄都是空的。
istream &operator>>(istream &istr, Student &obj)
{
istr >> obj.id;
istr.ignore();
istr.getline(obj.name, 50, '\n');
istr >> obj.gpa;
istr >> obj.major;
return istr;
}
int main(){
Student s;
ifstream file;
file.open("staudentFile1.txt");
if (!file)
cout << "Can not open file.\n";
else {
while(file>>s)list.insert(s);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.