同一二进制文件中的两个流

时间:2019-06-16 11:02:04

标签: c++ binaryfiles

所以我有问题。如果我将两个流放在同一文件中。

       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);
    } 
    };

0 个答案:

没有答案