所以我有问题。如果我将两个流放在同一文件中。
C<double> dk1("ime3.DAT");
C<double> dk2("ime3.DAT");
C<double> dk3("ime4.DAT");
dk1.PutElement(1.28);
std::cout<<dk1.NumberOfElements()<<" "<<dk2.NumberOfElements()<<" "<<dk3.NumberOfElements()<<std::endl;
输出将是:1 0 0 它应该是:1 1 0
在这里,我们有连接到同一文件的dk1和dk2流,但是我不知道为什么下面的代码无法正常工作?你能帮助我吗?我尝试了很多类似游标移动之类的东西,但我做不到。
template <typename T>
class C {
private:
std::fstream stream;
public:
C(const std::string &name) {
tok.open(name,std::ios::app | std::ios::binary);
if(!stream.is_open() || !stream) throw std::logic_error("error");
}
void PutElement(const T &element) {
tok.seekg(0,std::ios::end);
tok.write(reinterpret_cast<const char*>(&element),sizeof element);
}
int NumberOfElements() {
tok.seekg(0,std::ios::end);
return tok.tellg()/sizeof(TipElemenata);
}
};