演習問題で躓きました。プログラム:スタックを作る。メモリ領域ではなく、ディスクファイルに値を格納すること。
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
class stack{
fstream *fio;
int pos;
public:
stack(){fio=NULL;pos=0;}
stack(fstream *p){fio=p;pos=0;}
~stack(){(*fio).close();} //->演算子でもよかったのですが、.のほうがわかりやすいと思うのでいつもこういう書き方してます。
void setFile(fstream *p){fio=p;}
int pop();
void push(int);
void show();
};
int stack::pop(){
int key;
pos--;
(*fio).seekg(pos*sizeof(int),ios::beg);
(*fio).read((char*)&key,sizeof(int));
//ここでファイルから値一つ消す操作を入れたいです
return key;
}
void stack::push(int key){
(*fio).seekp(0,ios::end);
(*fio).write((char*)&key,sizeof(int));
pos++;
};
void stack::show(){
while(pos) cout << pop() << endl;
}
int main(){
fstream fio("stk",ios::in | ios::out | ios::binary);
if(!fio) return 1;
stack stk(&fio);
stk.push(5); stk.push(23); stk.push(342); stk.push(11);
stk.show();
return 0;
}