程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 運行時無法運行-C++read讀取二進制文件

運行時無法運行-C++read讀取二進制文件

編輯:編程綜合問答
C++read讀取二進制文件

#include
#include
#include
#include
#include"stdlib.h"
using namespace std;
const char* file="file.dat";
//===================================================
class plaint{
private:
string name;
string population;
string g;
inline void eatline(){while(cin.get()!='/n') continue;}
public:
plaint(){}
plaint(string name,string population,string g):name(name),population(population),g(g){}
void show();
};
//==================================
int plaint::ct=0;
void plaint::show(){
ifstream fin;
fin.open(file,ios::binary);//打開文件
if(fin.is_open()){
fin.seekg(0);
cout<<"open the file.dat"<<endl;
fin.read((char*)&this,sizeof(plaint));
cout<<" :"<<name<<endl;
if(fin.eof()){
fin.clear();
}
else{
cout<<"error in reading";
exit(EXIT_FAILURE);
}
}
else{
cout<<"error in reading";
exit(EXIT_FAILURE);
}

}
//=====================================================
void main(){
plaint p1;
p1.show();

}

最佳回答:


我估計原因有兩個:
1、 string 是一個容器,sizeof 得到的只是 string 這個類的大小,與裡面的元素個數沒關系。可以換成數組試試。
2、不明白 fin.read((char*)&this,sizeof(plaint)) 中的第一個參數作用,是不是多打了個 '&'?
希望對你有幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved