2016-06-28 136 views
-3

我在与文件处理相关的问题上遇到问题。
例如不是从C迁移到C++

FILE *f1; 
f1=open("something.txt") 

,然后使用的fread,fwrite的等等,我无法理解如何产生在C相同的结果++?
也是这些类型:

fwrite(&'object of class',sizeof('object of class'),1,fp); 

我不知道什么是++这段代码在C

也是什么“AB +”打开文件时当量相当于?

+3

(1)你需要迁移吗? C仍然有效。 (2)这是C++教科书更好的回答。 – zwol

+0

@zwol我不幸在这里没有选择,我搜索互联网thoroghly和答案混乱,请回答? – verynewuser

+0

见http://en.cppreference.com/w/cpp/header/fstream和http://en.cppreference.com/w/c/io –

回答

1

对于非POD(普通旧数据)类型,不建议使用这种序列化,因为虚拟函数表可能会破坏以及成员指针。我建议你为你的班级添加一个方法Serialize(const std::ostream & archive)

如果,但是,还是要写POD结构到文件,你可以去

#include <fstream> 
//... 

std::ofstream str("Filename.txt"); 
str.write(reinterpret_cast<const char *>(&myPODobject), sizeof myPODobject); 

但你的版本,这是使用FILE *fwrite将在这里工作,也

+0

@NathanOliver谢谢你,编辑我的回答 –

+0

谢谢,请你也请告诉阅读格式?和“rb +”的等价物? – verynewuser

+0

@verynewuser输入文件使用std :: ifstream。当你想指定格式时,使用第二个构造函数参数并传递标志。在你的情况下,它是'std :: ios :: binary | std :: ios :: in |的std :: IOS :: app' –