C++ 为什么我无法使用turbo c+在文件(二进制模式)中保存多条记录+;?

C++ 为什么我无法使用turbo c+在文件(二进制模式)中保存多条记录+;?,c++,file-handling,file-writing,turbo-c++,C++,File Handling,File Writing,Turbo C++,声明的类为“Elements”,对象为“e” void input()//写入记录** { fsf; 元素e; f、 打开(“ELEMENT.dat”,ios::out | ios::app); char ch; 做{ e、 getinfo(); f、 写((char*)&e,sizeof(e)); 包厢; }while(ch='y'); f、 close(); } 每当我在一个文件中写入超过1条记录时,只存储第一条记录,其余的不显示。[文件处理,TURBO C++] 这是一个逻辑错误还是需要

声明的类为“Elements”,对象为“e”

void input()//写入记录**
{
fsf;
元素e;
f、 打开(“ELEMENT.dat”,ios::out | ios::app);
char ch;
做{
e、 getinfo();
f、 写((char*)&e,sizeof(e));
包厢;
}while(ch='y');
f、 close();
}
每当我在一个文件中写入超过1条记录时,只存储第一条记录,其余的不显示。[文件处理,TURBO C++]


这是一个逻辑错误还是需要添加新语法?

对于二进制模式,您应该使用
ios::binary
打开。也显示
元素的定义。
cin>>ch
也读取空格,除非我记错了。因此,循环在用于输入第一个y的输入处结束。要进行测试,请输入yyy,并查看是否保存了4条记录。解决此问题的方法很多。Turbo C++有<代码> STD::String 吗?如果是这样,则读取字符串而不是字符,从而跳过空白。或者,编写
read\u from\u cin\u直到\u newline()
函数以忽略剩余的行和换行。@TedLyngmo我以前尝试过ios::binary,但没有任何更改。@hyde Turbo-C++太旧了,可能没有标准库。查看维基百科了解它的历史。遗憾的是,他们仍然像学校一样教授英语
void input() //WRITING RECORD**
{
    fstream f;
    Element e;
    f.open("ELEMENT.dat", ios::out|ios::app);
    char ch;
    do{
        e.getinfo();
        f.write((char*)&e,sizeof(e));
        cout<<"\n More Records?";
        cin>>ch;
    }while(ch=='y');
    f.close();
}