先上代码:
#include<iostream>
#include<string>
#include<vector>
#include<stdio.h>
#include<fstream>
using namespace std;
bool exists = false;//判定文件是否存在
int Fnum = 0;//数据总个数
class table{
private:
string user;
int num;
double biao[12];
public:
table() :user(""), num(0){
for (int i = 0; i < 12; i++)
biao[i] = 0;
}
table(string u, int n, double a[]) :user(u), num(n){
for (int i = 0; i < 12; i++)
biao[i] = a[i];
}
double getSum(){
double sum = 0;
for (int i = 0; i < 12; i++)
sum += biao[i];
return sum;
}
double getBiao(int i){
return biao[i];
}
void show(){
cout <<"用户名:" <<user << " 楼栋号:"<< num << endl;
}
};
vector<table> ta;
int main()
{
double a[12] = { 0 };
table c("wemore", 12, a); Fnum = 1;
//int x;
ofstream writeF("table.dat", ios::binary);
writeF.write((char*)&c, sizeof(table)*Fnum);
writeF.close();//测试数据
ifstream readF("table.dat", ios::binary);
exists = !readF.fail();
if (exists){
cout << "读到文件" << endl;
while (!readF.eof()){
cout << "运行了" << endl;
table tmp;
readF.read((char*)&tmp, sizeof(tmp));
readF.close();
ta.push_back(tmp);
//readF.seekg(sizeof(table), ios::cur);
}
ta[0].show();
readF.close();
}
else
cout << "文件不存在" << endl;
return 0;
}
一直有秘制报错,调试发现在 return 0 上,改成 void main 直接在最后一个大括号报错。。请大神帮忙看看,问题在哪。这个循环也莫名其妙循环两次,虽然我只有一个数据被写入文件
#include<iostream>
#include<string>
#include<vector>
#include<stdio.h>
#include<fstream>
using namespace std;
bool exists = false;//判定文件是否存在
int Fnum = 0;//数据总个数
class table{
private:
string user;
int num;
double biao[12];
public:
table() :user(""), num(0){
for (int i = 0; i < 12; i++)
biao[i] = 0;
}
table(string u, int n, double a[]) :user(u), num(n){
for (int i = 0; i < 12; i++)
biao[i] = a[i];
}
double getSum(){
double sum = 0;
for (int i = 0; i < 12; i++)
sum += biao[i];
return sum;
}
double getBiao(int i){
return biao[i];
}
void show(){
cout <<"用户名:" <<user << " 楼栋号:"<< num << endl;
}
};
vector<table> ta;
int main()
{
double a[12] = { 0 };
table c("wemore", 12, a); Fnum = 1;
//int x;
ofstream writeF("table.dat", ios::binary);
writeF.write((char*)&c, sizeof(table)*Fnum);
writeF.close();//测试数据
ifstream readF("table.dat", ios::binary);
exists = !readF.fail();
if (exists){
cout << "读到文件" << endl;
while (!readF.eof()){
cout << "运行了" << endl;
table tmp;
readF.read((char*)&tmp, sizeof(tmp));
readF.close();
ta.push_back(tmp);
//readF.seekg(sizeof(table), ios::cur);
}
ta[0].show();
readF.close();
}
else
cout << "文件不存在" << endl;
return 0;
}
一直有秘制报错,调试发现在 return 0 上,改成 void main 直接在最后一个大括号报错。。请大神帮忙看看,问题在哪。这个循环也莫名其妙循环两次,虽然我只有一个数据被写入文件