我一直用這段代碼停留在同一個地方。最後決定在網上提問。任何幫助,將不勝感激。從C++中的文本文件讀取/寫入結構
我已經創建了一個結構體,我可以將數據添加到結構中,但仍不確定我是否遵循了正確的方法。當我嘗試從文本文件讀取數據時,主要問題在於。
我似乎得到一個錯誤說:
錯誤C2678:二進制「>>」:沒有運營商發現,這需要左手 數類型的「的std :: ifstream的」(或有沒有可接受的轉化率)
結構體:
struct bankDetails //structure for bank details
{
int acc_number;
double acc_balance;
double deposit_amt;
double withdraw_amt;
double interest_rate;
//char acc_type;
};
struct CustDetails //structure for account details
{
string cust_name;
string cust_pass;
bankDetails bankAccounts[99];
};
這是我寫從文件中讀取的代碼。
CustDetails loadDataFromFile()
{
CustDetails x;
ifstream dimensionsInfile;
dimensionsInfile.open ("storage.txt");
for (int i=0; i < 2; i++)
{ // write struct data from file
dimensionsInfile>>
&x.bankAccounts[i].acc_balance>>
&x.bankAccounts[i].acc_number>>
&x.cust_nam>>
&x.cust_pass>>
&x.bankAccounts[i].withdraw_amt>>
&x.bankAccounts[i].deposit_amt>>
&x.bankAccounts[i].interest_rate>>
cout<<"Data loaded"<<endl;
}
return x;
}
的代碼寫入到文件:主要功能
void details_save(int num,CustDetails x)
{
string filePath = "storage.txt";
ofstream dimensionsOutfile;
dimensionsOutfile.open ("storage.txt");
if (!dimensionsOutfile)
{
cout<<"Cannot load file"<<endl;
return ;
}
else
{
for (int i=0; i < num; i++)
{ // write struct data from file
dimensionsOutfile<<
&x.bankAccounts[i].acc_balance<<
&x.bankAccounts[i].acc_number<<
&x.cust_name<<
&x.cust_pass<<
&x.bankAccounts[i].withdraw_amt<<
&x.bankAccounts[i].deposit_amt<<
&x.bankAccounts[i].interest_rate<<
cout<<" Customer 1 stored"<<endl;
}
cout <<"All details have been successfully saved"<<endl;
dimensionsOutfile.close();
}
}
部分:
#include "stdafx.h"
#include <string>
#include <string.h>
#include <ctime>
#include <fstream>
#include <sstream>
#include <iostream>
#include <iomanip>
int main()
{
int maxNum;
CustDetails c;
c = loadDataFromFile(); //loads data from the file
{
//This part adds and changes values
}
details_save(maxNum, c); //saves data back to the file
return 0;
}
我在C++初學者任何幫助,將不勝感激。 乾杯!
您將指針保存在文件中而不是實際數據中。 – drescherjm
直接的問題是您正在通過指針將參數傳遞給各個字段。刪除'&':輸入opwrators通過引用獲取值。 ......最重要的是:你總是**需要在讀取操作後檢查**是否成功(如果你剛剛學習了最後一點,你剛剛做出了巨大的飛躍)。 –